jQuery catch td

时间:2010-06-16 09:04:51

标签: jquery css-selectors

尝试使用td抓住style

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

希望这应该有效,但事实并非如此:

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

有什么想法吗?

感谢。

3 个答案:

答案 0 :(得分: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 :(得分:0)

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

这适用于资源管理器8,Firefox,Safari和Chrome demo

答案 2 :(得分:0)

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