循环遍历jquery中的元素集

Chr*_*ris 3 iteration jquery css-selectors

$('form td .hint p')这个jquery选择器返回一个列表[p,p,p,p,p,p].

我想知道循环每一个的最佳方法是什么,检查他们的css值,并在css值=我想要的东西时做一些事情.

我有这个功能来显示和隐藏工具提示,但我只希望一次显示一个工具提示.虽然这样做鼠标悬停及移出的作品,这是因为越野车目前我使用的是父(),next()的,和子(),找到合适的元素,和jQuery瞬间插入我展示元素和隐藏围绕一个div包装.所以基本上我试图强制所有其他p元素有显示:阻止每次鼠标悬停时隐藏.

目前这样做:

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.
Run Code Online (Sandbox Code Playgroud)

cle*_*tus 14

用途each():

var displays = '';
$("p").each(function(i, val) {
  displays += "Paragraph " + i + ": " + $(this).css("display") + "\n";
});
alert(displays);
Run Code Online (Sandbox Code Playgroud)

失败的原因:

var target = $("p");
var display = target[0].css("display");
Run Code Online (Sandbox Code Playgroud)

是,target[0] jQuery对象.你可以这样做:

var display = $(target[0]).css("display");
Run Code Online (Sandbox Code Playgroud)

另外,如果您阅读以下文档css():

返回第一个匹配元素的样式属性.

还有两点值得一提.

首先,我不建议自己做一个工具提示.获取众多插件之一.我之前使用过这个,它完成了这项工作.

其次,如果您正在检查CSS显示值,可能有一个值得使用的快捷方式.例如,你可以这样做:

$("p").each(function() {
  if ($(this).css("display") == "none") {
    $(this).addClass("blah");
  }
});
Run Code Online (Sandbox Code Playgroud)

但你也可以使用:hidden:visible选择器,所以:

$("p:hidden").addClass("blah");
Run Code Online (Sandbox Code Playgroud)

检查css()调用值在很大程度上是不可靠的,因为您只检查内联样式而不是样式表值.