我知道这是一个基本问题,但我在代码的某个地方遇到了问题。我从某处获得了该代码,但现在我正在根据我的需要对其进行修改。
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 :(得分: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() : {};
这样,你的函数将始终返回一个具有length
和query
属性的对象,但如果jQuery没有找到它,它将没有元素。