Javascript 为什么这个基于属性的选择器在jQuery中出现错误?

Javascript 为什么这个基于属性的选择器在jQuery中出现错误?,javascript,jquery,Javascript,Jquery,我确实有一个id为keylist的div,其中有一个无序列表。我需要.position().第一个可见元素的顶部。实际上[display=block]不是正确的选择器 // Using Filter alert("Using Filter " +$("div#keylist ul li").filter(".blockDec").first().position().top); 使用:可见选择器 alert($("div#keylist ul li").filter("[display=blo

我确实有一个id为keylist的div,其中有一个无序列表。我需要.position().第一个可见元素的顶部。

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

// Using Filter
alert("Using Filter " +$("div#keylist ul li").filter(".blockDec").first().position().top);
使用:可见选择器

alert($("div#keylist ul li").filter("[display=block]").first().position().top);
我想这就是你需要的

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

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

// Using Filter
alert("Using Filter " +$("div#keylist ul li").filter(".blockDec").first().position().top);
使用:可见选择器

alert($("div#keylist ul li").filter("[display=block]").first().position().top);
我想这就是你需要的

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

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

这里有几种方法可以达到同样的效果

alert($('ul > li').filter(function(){
  return $(this).css('display') == 'block';
}).first().text());
由于您已经将父项设置为
div#keylist
,因此可以使用
find()
而不是使用
filter()

filter和find之间有什么区别

您还可以查看并优化选择器

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

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

这里有几种方法可以达到同样的效果

alert($('ul > li').filter(function(){
  return $(this).css('display') == 'block';
}).first().text());
由于您已经将父项设置为
div#keylist
,因此可以使用
find()
而不是使用
filter()

filter和find之间有什么区别

您还可以查看并优化选择器

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

@Rajesh不,它没有。请参阅[display=block]不是选择器。您必须向筛选器传递一个有效的css选择器。@Rajesh不,它没有。请参阅[display=block]不是选择器。你必须通过筛选一个有效的css选择器。display=block和visibility=visible是同一件事吗?@YogeshYadav否它不是同一个显示显示显示/隐藏要在Dom中显示的div并清空它的位置,但在可见性下元素位置仍然在它的位置上,但是否可见我希望选择器选择display=block的所有li。我该怎么做?“[display=block]不是正确的选择器”。这是完全正确的。只是没有达到OP的期望。此外,“li为是:可见表示显示:块不表示可见表示可见性”也不正确<代码>:可见
与显示:块
无关。非块元素也可以是可见的。@dfsq您在第二点上完全正确,但[display=block]不是正确的选择器[style=“display:block”]可能是正确的一个吗?显示=块和可见性=可见相同的东西?@YogeshYadav否其显示不相同显示显示/隐藏要在Dom中显示的div并清空其位置,但具有可见性时元素位置仍在其位置,但是否可见?我希望选择器选择显示=块的所有li。我该怎么做?“[display=block]不是正确的选择器”。这是完全正确的。只是没有达到OP的期望。此外,“li为是:可见表示显示:块不表示可见表示可见性”也不正确<代码>:可见与显示:块无关。非块元素也可以是可见的。@dfsq您在第二点上完全正确,但[display=block]不是正确的选择器[style=“display:block”]可能是正确的选择器