2012-08-13 6 views
0

저는 이것이 기본적인 질문이라는 것을 알고 있지만 제 코드의 어딘가에 붙어 있습니다. 나는 어딘가에서 그 코드를 가지고 있지만 지금은 내 필요에 따라 그것을 수정하고 있습니다.내 함수가 비어 있음을 반환합니다. 왜?

jQuery ('# selector')의 기능은 무엇입니까? 내 코드에서 항상 빈 반환합니다. 그때 나는이 쿼리 함수를 호출 내가 매개 변수로 선택을 통과 할 때

여기에 내 코드

query: function (selector, context) { 
      var ret = {}, that = this, jqEls = "", i = 0; 
      if(context && context.find) { 
       jqEls = context.find(selector); 
      } else { 
       jqEls = jQuery(selector); 
      } 
      ret = jqEls.get(); 
      ret.length = jqEls.length; 
      ret.query = function (sel) { 
       return that.query(sel, jqEls); 
      } 

      return ret; 
     } 

입니다. console.log(selector) 할 때이 함수에서 필요한 모든 선택기가 있습니다. 그러나 문제는이 줄에 jqEls = jQuery(selector);입니다. 이 후 console.log(jqEls)을 수행하면 빈을 반환하므로 전체 함수가 비어있게됩니다.

작동시키기 위해 다른 내용을 사용할 수 있습니까?

+0

데모를 제공해 줄 수 있습니까? – xdazz

+0

여러 파일에 많은 코드가 있습니다. 그렇게 많은 코드를 가지고 어떻게 데모를 할 수 있습니까? 어떠한 제안? jsfiddle은 이것에 적합하지 않습니다. – 2619

+0

나를 위해 잘 작동하는 것 같습니다 : http://jsfiddle.net/stZzR/. –

답변

1

jquery('#selector')document.getElementById('selector')과 같습니다. ID가 selector 인 DOM 노드가없는 경우 빈 결과가 표시됩니다.

<div id="selector">...</div> 

은이 div에 해당하는 dom 노드를 반환합니다. jquery가로드되어 있습니까?

+0

id 선택기가있는 div 태그가 있습니다. 하지만 여전히 작동하지 않습니다. – 2619

1

jQuery(selector)은 선택기 기준을 충족하는 DOM 요소를 찾고 있습니다.

$('#example') == jQuery('#example') 

모두 내가 질문이 코드를 읽은 후 ID가 "예"

0

뭔가를 찾습니다 : 당신은 당신의 변수 selector에 #을 배치해야합니까? 이 문제를 해결하기위한 해결책은 다음과 같습니다. jqEls = jQuery("#" + selector);

selector의 유형으로 문제가 해결되지 않았습니까? 문자열? 물건? jQueryObject?

+0

예 선택자 ID 접두어가'# '입니다. 그리고 두 번째 질문을 자세히 설명해 주시겠습니까? 나는 정말로 당신의 마지막 코멘트를 얻지 못한다. – 2619

+0

문자열입니다. – 2619

+0

나는 단지 typeof selector의 반환을 의미한다. 어떤 jQuery 버전을 사용하고 있습니까? 여러 버전의 jQuery를 사용합니까? –

0

$(selector).get()은 요소가없는 경우 undefined을 반환합니다. 이것이 귀하의 함수가 undefined을 반환하는 이유입니다. 발견하는 요소가없는 경우이 문제를 해결하려면, 당신은 기본 값을 사용할 수 있습니다

ret = jqEls.length ? jqEls.get() : {}; 

함수는 항상 lengthquery 특성을 가진 개체를 반환이 방법하지만 요소의 경우가되지 않습니다 jQuery를 하나도 찾지 못했습니다.

+0

내 게시물에서 언급했듯이 문제는이 줄에있다.'jqEls = jQuery (selector);'. 이 줄 jqEls가 비어있는 경우 기본적으로이 줄'ret = jqEls.get();은 정의되지 않은 값을 반환합니다. – 2619

+0

@ al0neevenings'jQuery (selector)'는 항상 jQuery 객체를 반환합니다. 요소가 일치하지 않으면'length'는 0이 될 것이고'.get()'은 당신에게 undefined를 줄 것입니다. 내가 요소를 찾을 수없는 경우 undefined 대신 빈 객체'{}'를 사용하여이 코드를 게시했습니다. – jbabey

+0

하지만 전달하는 선택기가 유효하며 ID가있는 HTML 코드에 HTML 요소가 있습니다. 그럼 왜 일치하지 않는거야? – 2619

관련 문제