2012-08-13 147 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 2012-08-13 12:43:46

+0

它在很多文件中都有很多代碼。那麼我怎樣才能給它演示一個代碼呢?任何建議? jsfiddle不適合這個。 – 2619 2012-08-13 12:44:55

+0

似乎很適合我:http://jsfiddle.net/stZzR/。 – 2012-08-13 12:47:25

回答

1

jquery('#selector')相當於document.getElementById('selector')。如果沒有id爲selector的DOM節點,則會得到一個空的結果。

例如

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

將返回對應於該div的dom節點。你有jquery加載?

+0

我有ID選擇器的div標籤。但它仍然不起作用 – 2619 2012-08-13 12:46:48

1

jQuery(selector)正在尋找符合選擇器標準的DOM元素。

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

雙方將尋找一些ID爲「榜樣」

0

閱讀你的代碼我有一個問題後:你把#在變量selector? 一個解決方案,通過更換壞線來解決這個問題jqEls = jQuery("#" + selector);

如果問題不是由於那你能說selector的類型嗎?字符串?對象? jQueryObject?

+0

是選擇器ID前綴'#'。你能否詳細說明你的第二個問題?我真的沒有得到你最後的評論。 – 2619 2012-08-13 13:42:00

+0

這是一個字符串。 – 2619 2012-08-13 13:51:17

+0

我只是指'typeof selector'的返回值。你使用的是哪個版本的jQuery?你使用多個版本的jQuery? – 2012-08-13 14:02:58

0

$(selector).get()將返回undefined如果找不到元素。這就是爲什麼你的函數返回undefined。爲了解決這個問題,你可以,如果沒有找到的元素使用默認值:

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

這樣你的函數總是返回具有您lengthquery屬性的對象,但它不會有,如果一個元素的jQuery沒有找到一個。

+0

正如我在文章中提到的,問題出現在這行'jqEls = jQuery(selector);'。在這行之後,jqEls爲空,所以默認這行'ret = jqEls.get();'將返回undefined。 – 2619 2012-08-13 13:52:57

+0

@ al0neevenings'jQuery(selector)'將總是返回一個jQuery對象。如果沒有元素匹配,'length'將會是0,'.get()'會給你未定義的。我發佈的代碼通過使用一個空對象'{}'來處理這個問題,而不是未定義的,如果沒有找到元素的話。 – jbabey 2012-08-13 13:55:22

+0

但我傳遞的選擇符是有效的,並且在我的帶有ID的html代碼中有HTML元素。那爲什麼它不匹配? – 2619 2012-08-13 13:59:34

相關問題