27

使用jQuery,您将如何找到具有特定样式的元素(例如:浮动:左),无论它是内联样式还是在CSS文件中定义的样式?

3个答案

重置为默认值
42

使用过滤器功能:

$('*').filter(function(){return$(this).css('float')=='left';});

将“*”替换为适合您的案例的适当选择器。

4
  • 我认为比我的解决方案要好得多。 评论 2009年1月14日6:23
  • 是的,+1是个不错的答案,但为了理智和速度起见,人们可能希望将搜索字段减少到小于“*”的值 评论 2009年1月14日6:52
  • 你应该使用this.cs.float(此.css.float)而不是为过滤器的每个迭代创建一个新的jQuery对象。
    – 参宿一
    评论 2014年1月11日10:51
  • 1
    @Alnitak如果想使用jQuery的.css().原因是.css()不是javascript函数,因此您仍需要使用$(本)。您可以使用$(this).css.float但它找不到左边因为浮动不是索引。如果要使用strict你必须以不同的方式选择它,比如this.attributes.style.nodeValue.search(/float:(\s)?左/i)!=-1说明其他属性可以设置“left”。所以即使有开销,$(this).css(“浮动”)是IMO的最佳选择。
    – 达宾
    评论 2016年11月28日21:07
11

这会很慢。就像真的很慢。如果您知道需要选择具有给定CSS样式的所有元素,那么通过对每个元素应用一个附加的CSS规则,然后根据该规则进行选择,您将看到更好的性能。

它的启动速度将更快,可读性更强。

CSS(客服代表):

.float-left{float:左}

Java脚本:

$('.float-left');
1
  • 我刚回来又看了一遍这个问题,现在有点尴尬。这肯定是最好的解决方案。我无法想象为什么我需要选择这样的元素。。。
    – 刻痕
    评论 2012年11月15日22:01
-2

嗯,我不知道我是否会这样做。为什么不使用一致的ID或类名重命名这些元素,然后选择它?

如果这不是一个选项,那么这应该有效:

this.getElementsByTagName('div').item(0).style.float='left';

我想。

1
  • 4
    这行不通。您的代码选择所有div,将选择减少到第一个div,然后将其浮点值设置为左侧。 评论 2009年1月14日8:23

你的答案

单击“发布您的答案”,表示您同意我们的服务条款并确认您已阅读我们的隐私政策.

不是你想要的答案吗?浏览标记的其他问题问你自己的问题.