$('form td .hint p')
此jquery选择器返回一个列表[p,p,p,p,p,p]
。
我想知道循环每一个的最佳方法是什么,检查他们的css值,并在css值=我想要的东西时做点什么。
我有这个功能来显示和隐藏工具提示,但我只希望一次显示一个工具提示。在做mouseover和mouseout工作的时候,它有问题,因为我正在使用parent(),next()和child()来查找正确的元素,并且jquery瞬间插入一个div环绕我正在显示和隐藏的元素。所以基本上我试图强制所有其他具有display:block的元素在每次鼠标悬停时隐藏。
目前这样做:
target = $('form td .hint p');
target[0].css('display') gives an error.
target.css('display') seems to only return the css of the first one.
答案 0 :(得分:14)
使用each()
:
var displays = '';
$("p").each(function(i, val) {
displays += "Paragraph " + i + ": " + $(this).css("display") + "\n";
});
alert(displays);
失败的原因:
var target = $("p");
var display = target[0].css("display");
是target[0]
不是 jQuery对象。你可以这样做:
var display = $(target[0]).css("display");
另外,如果您阅读css()
的文档:
首先返回一个样式属性 匹配元素。
还有两点值得一提。
首先,我不建议自己做一个工具提示。获取众多插件之一。我之前使用过this one并完成了这项工作。
其次,如果您正在检查CSS显示值,可能有一个值得使用的快捷方式。例如,你可以这样做:
$("p").each(function() {
if ($(this).css("display") == "none") {
$(this).addClass("blah");
}
});
但你也可以使用:hidden
和:visible
选择器,所以:
$("p:hidden").addClass("blah");
检查css()
调用的值很大程度上是不可靠的,因为您只检查内联样式而不是样式表值。