2012-08-13 150 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

相关问题