2012-03-06 3 views
1

Can Can be someone be explain this?jQuery 바인딩의 콜백 함수에서 아무 것도 반환 할 수 없습니다.

something라는 플러그인 내 코드입니다 :

(function($){ 
$.fn.extend({ 
    something: function(options) { 
     // Here I define defaults 
     $(this).bind('change', function() { 
      return $(this).each(function() { 
      // a function body 
      }); 
     }); 
    } 
}); 
})(jQuery); 

와 나는 같은 다른 JS에서이 플러그인을 호출 : 그것은 나를 undefined을 반환 내 선택의 모든 변화

var myarray=new Array(); 
myarray[0] = $('#selector').something({ 
regex:/^([\u0600-\u06FF]|\s)*$/, 
    // another options 
    }); 
$('#selector').change(function(){ 
    alert (myarray[0]); 
}); 

.

완전히 나를 제정신이게합니다. 누구든지 나를 도울 수 있으면 고마워.

편집 :

너는 내 전체 코드 here를 읽을 수 있습니다.

+0

는 전체 자바 스크립트를 게시 할 수 귀하의 선택에 호출 JQuery와 방법 체인에 비해 플러그인 다른 철자? – hohner

+0

예 할 수 있습니다. 댓글에 게시하거나 질문을 수정해야합니까? – Mosijava

+0

질문을 편집하십시오. 현재 코드를 주석으로 대체하려고합니다. 오류가 해당 영역에있을 수도 있습니다 – hohner

답변

4

플러그인에서 그냥 일치하는 모든 요소 집합에 루프를 실행하고 jQuery 객체를 반환하는 요소에 change 이벤트 핸들러를 첨부하면됩니다.

something 플러그인에서 무엇인가를 반환하려면 return 문은 이벤트 처리기 외부에 있어야합니다.

$.fn.extend({ 
    something: function(options) { 
      return $(this).each(function() { 
       //Do processing here 
      }); 
    } 
}); 

이제 myarray 자체가 DOM 요소의 배열 인의 jQuery 객체를 반환 each jQuery를하기 때문에 배열 될 것이라고이

var myarray = $('#selector').something({ 
     regex:/^([\u0600-\u06FF]|\s)*$/, 
     // another options 
}); 
$('#selector').change(function(){ 
    alert (myarray[0]); 
}); 

주를 사용할 수 있습니다.

+0

Shnkar, 고마워 형 – Mosijava

2

귀하의 '무언가'기능이 아무 것도 반환하지 않기 때문입니다.

0

하나의 큰 문제는 ... "뭔가"당신이

+0

당신은 그것을 설명 할 수 있습니까? – Mosijava

+0

바이올린의 철자를보고, 위의 것보다 더 철자가 있습니다 – charlietfl

+0

오, 여기 내 플러그인 이름과 일치하도록 바이올린에서 내 플러그인 이름을 변경합니다. 그게 내 플러그인에없는 피들에서의 실수입니다.) – Mosijava

관련 문제