2010-06-16 61 views
0

试图赶上tdstylejQuery的抓TD

<td style="color: #333;"> 

希望这应该工作,但它并不:

td:[style='color: #333;'] 

任何想法?

谢谢。

回答

1

好像缺少功能。

$.fn.hasStyle = function(style){ 
    return this.filter(function(){ 
    return ($(this).attr('style').indexOf(style) > -1) 
    }).length > 0; 
}; 

简介:

$('td').hasStyle('color: #333'); 

在你的情况下,它可能会更自定义选择:

$(document).ready(function(){ 
    $.extend($.expr[':'], { 
     hasStyle: function(e, i, arg){ 
      var s = new String($(e).attr('style'));   
      return(s !== 'undefined' && s.indexOf(arg[3]) > -1); 
     } 
    }); 
});​ 

简介:

$('td:hasStyle("color: #333")').fadeOut('slow'); 

工作示例:

http://jsbin.com/atavu3/edit

+1

自定义选择器是一个很好的解决方案IMO。 – Jamiec 2010-06-16 09:21:48

+0

纠正我与我基于您的自定义选择器...它不会得到一个... http://jsfiddle.net/ysr6t/2/ – Reigel 2010-06-16 09:26:41

+0

好吧,它看起来像我需要指定一个字符串使用'.indexOf'。修正了。 – jAndy 2010-06-16 09:32:14

0
$('td[style="color: rgb(51, 51, 51);"], td[style="color: #333;"], td[style="COLOR: #333"]') 

这个作品在Explorer 8中,火狐,Safari和Chrome demo

+0

+1 .............,我加了一些演示...;) – Reigel 2010-06-16 09:12:00

+1

它不起作用。警报0 – rahul 2010-06-16 09:15:39

+1

mine alerts 1 ..好吧,我在铬... FF警报0 ... – Reigel 2010-06-16 09:16:37

0

我怀疑它不工作的原因是因为一些浏览器将“正常化”的价值观。所以你可能会发现在解析它的时候,它实际上将#333更改为更标准的6字符颜色字符串#333333(或者甚至可能是rgb()样式)。我不得不承认,我不能想到解决这个问题的方法,但是如果这是一些简单的测试来读取当前值,那么你应该能够确定。