我是jQuery的新手,我有以下误解。
<p>adasd</p>
<p>42323123</p>
...
$("p").eq(4).html("some html")
我知道我的HTML中只有两个<p>
所以我确实希望控制台会说我一个例外,或者会发出一些信号告诉我我做错了什么。
console.log($("p").eq(4))
打印:
prevObject: jQuery.fn.init[2], context: document, jquery: "2.1.1", constructor: function, selector:...
为什么这样工作?
答案 0 :(得分:3)
由于jQuery .eq()
函数的documentation page状态:
如果在指定的从零开始的索引处找不到元素,则该方法构造一个具有空集和长度属性为0的新jQuery对象。
如果您想检查$("p").eq(4)
是否已成功找到元素,您可以执行以下操作:
var paragraphFive = $("p").eq(4);
if (paragraphFive.length) {
// It exists
}
else {
// It doesn't
}
答案 1 :(得分:1)
无论选择器是否匹配任何元素,此(以及许多其他选择器)将始终返回jQuery对象。在没有元素匹配的情况下,返回的jQuery对象将包含零元素;您可以使用.length
:
console.log($("p").eq(4).length) // 0
答案 2 :(得分:0)
创建了此JsFiddle
HTML:
<p>first</p>
<p>second</p>
脚本:
$(document).ready(function(){
window.console&&console.log($("p").length);
});
这将记录'2'。在阅读之前,您始终可以检查阵列中是否有4个元素。这是任何编程语言BTW的好习惯......
答案 3 :(得分:0)
这是因为没有第四个要素返回。 jQuery为您的选择返回一个空集。
尝试:
var el;
(el = $('p').eq(4)).length != 0 ?
el.html('some html') :
console.log('did nothing');