【发布时间】:2010-10-01 07:40:53
【问题描述】:
使用 jQuery,您将如何找到具有特定样式的元素(例如:float: left),无论它是内联样式还是在 CSS 文件中定义的样式?
【问题讨论】:
标签: jquery css css-selectors
使用 jQuery,您将如何找到具有特定样式的元素(例如:float: left),无论它是内联样式还是在 CSS 文件中定义的样式?
【问题讨论】:
标签: jquery css css-selectors
$('*').filter(function() {
return $(this).css('float') == 'left';
});
用适合您情况的选择器替换“*”。
【讨论】:
this.css.float,而不是为过滤器的每次迭代创建一个新的jQuery对象。
.css(),你需要把它变成一个对象。原因是 .css() 不是 javascript 函数,所以您仍然需要使用 $(this)。您可以使用$(this).css.float,但它不会找到left,因为float 不是索引。如果您想使用严格的this,则必须使用this.attributes.style.nodeValue.search(/float:(\s)?left/i) != -1 之类的不同方式选择它,因为其他属性可以设置为“左”。因此,即使有开销,$(this).css('float') 也是 IMO 的最佳选择。
这会很慢。就像真的很慢。如果您知道需要选择具有给定 CSS 样式的所有元素,则通过将单个附加 CSS 规则应用于每个元素,然后按该规则进行选择,您将看到更好的性能。
它的启动速度会更快,更易读。
CSS:
.float-left {float:left}
Javascript:
$('.float-left');
【讨论】:
嗯,我不知道我是否会这样处理。为什么不用一致的 ID 或类名重命名这些元素,然后选择它?
如果这不是一个选项,这应该可行:
this.getElementsByTagName('div').item(0).style.float = 'left';
我认为。
【讨论】: