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)之后它返回空,因此整个函数返回空。

我可以使用与此不同的东西来使其工作吗?

4

4 回答 4

1

jquery('#selector')相当于document.getElementById('selector')。如果没有 id 为 的 DOM 节点selector,则会得到一个空结果。

例如

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

将返回与此 div 对应的 dom 节点。你有加载jquery吗?

于 2012-08-13T12:45:13.760 回答
1

jQuery(selector)正在寻找符合选择器标准的 DOM 元素。

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

两者都会寻找 id 为“example”的东西

于 2012-08-13T12:45:36.057 回答
0

阅读您的代码后,我有一个问题:您是否将# 放入变量中selector?通过替换坏行来解决此问题的解决方案jqEls = jQuery("#" + selector);

如果问题不是由于那个,你能说出类型selector吗?细绳 ?目的 ?jQuery 对象?

于 2012-08-13T13:11:10.643 回答
0

$(selector).get()undefined如果没有找到元素将返回。这就是你的函数返回的原因undefined。要解决此问题,如果没有找到元素,您可以使用默认值:

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

这样,您的函数将始终返回一个具有您的lengthquery属性的对象,但如果 jQuery 没有找到一个元素,它将没有元素。

于 2012-08-13T13:12:32.143 回答