JQuery поймать тд - PullRequest
       1

JQuery поймать тд

0 голосов
/ 16 июня 2010

Пытается поймать td с style:

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

Надеюсь, это сработает, но это не так:

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

Есть идеи?

Спасибо.

Ответы [ 3 ]

1 голос
/ 16 июня 2010

Похоже, отсутствует функция.

$.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

0 голосов
/ 16 июня 2010

Я подозреваю, что причина этого не в том, что некоторые браузеры "нормализуют" значения.Таким образом, вы можете обнаружить, что при синтаксическом анализе он фактически меняет # 333 на более стандартную 6-символьную строку цвета # 333333 (или, возможно, даже в стиле rgb ()).Я должен признать, что я не могу придумать, как обойти это, но у вас должна быть возможность подтвердить, если это будет с несколькими простыми тестами для чтения текущих значений.

0 голосов
/ 16 июня 2010
$('td[style="color: rgb(51, 51, 51);"], td[style="color: #333;"], td[style="COLOR: #333"]')

Это работает в Explorer 8, Firefox, Safari и Chrome demo

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...