为什么基于此属性的选择器在 jQuery 中给出错误

Why is this attribute based selector giving error in jQuery?

本文关键字:jQuery 出错 错误 选择器 于此 属性 为什么      更新时间:2023-09-26
alert($("div#keylist ul li").filter("[display=block]").first().position().top);

我确实有一个以 id 作为键列表的div,并且其中有一个无序列表。我想要第一个可见元素的 .position((.top。

实际上[display=block]不是一个正确的选择器

改用:可见选择器

alert($("div#keylist ul li:visible").first().position().top);

我认为这就是你需要的

alert($('ul > li').filter(function(){
  return $(this).css('display') == 'block';
}).first().text());

演示

如前所述,前面的答案[display=block]不是选择器。但是如果你仍然坚持选择li具有这个css属性的元素,你可以按类

这里有几种方法可以实现相同的目标

// Using Filter
alert("Using Filter " +$("div#keylist ul li").filter(".blockDec").first().position().top);

由于您已经将父级作为div#keylist因此您可以使用find()而不是使用filter()

这是filter & find之间的区别

你也可以看看 这里 和 这里 优化选择器

//Using find .Here it will find all child element of ul
alert("Using Find " +$("div#keylist ul").find(".blockDec").first().position().top);
//Optimizing the jQuery selector 
alert("Optimized " +$("#keylist").find(".blockDec:first").position().top);

吉斯菲德尔