2010-06-16 64 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()樣式)。我不得不承認,我不能想到解決這個問題的方法,但是如果這是一些簡單的測試來讀取當前值,那麼你應該能夠確定。