我的函数返回空。为什么?

时间:2012-08-13 12:41:27

标签: javascript jquery

我知道这是一个基本问题,但我在代码的某个地方遇到了问题。我从某处获得了该代码,但现在我正在根据我的需要对其进行修改。

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 个答案:

答案 0 :(得分:1)

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

e.g。

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

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

答案 1 :(得分:1)

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

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

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

答案 2 :(得分:0)

阅读完代码后,我有一个问题:您是否将#放在变量selector中? 通过jqEls = jQuery("#" + selector);

替换坏线来解决此问题的解决方案

如果问题不是由于那个,你可以说selector的类型吗?串?对象? jQueryObject?

答案 3 :(得分:0)

如果找不到任何元素,

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

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

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