Мне нужно применить некоторый css к некоторому TR и его детям, за исключением одного столбца и его дочерних элементов, которые имеют флажки
Ни одно из следующих не работало
$('#myRow').not('input').css( "background-color", "#E0E0E0" ).bind('click', function(e){e.preventDefault();});
$('#myRow').not('.myCellClass').css( "background-color", "#E0E0E0" ).bind('click', function(e){e.preventDefault();});
$('#myRow:not(.myCellClass)').css( "background-color", "#E0E0E0" ).bind('click', function(e){e.preventDefault();});
$('#myRow:not(input)').css( "background-color", "#E0E0E0" ).bind('click', function(e){e.preventDefault();});
Добавьте другой класс в td, который вы хотите связать с событием клика.
<table>
<tr>
<td class="clickable"></td>
<td class="nonclickable"></td>
<td class="clickable"></td>
</tr>
</table>
$('tr td.clickable').click(function(){ // do wathever you want.
});
Делегирование событий - лучший вариант:
$('table#mayTable').on('click', 'tr', function (event) {
if ($(event.target).find('input').length) {
// this row has inputs
return;
}
// row does not have inputs
// do what ever you like
}
В качестве примера вы можете использовать .end()
как .end()
ниже, для изменения CSS.
$(function() {
$("table").find("tr").css("background","red")
.end()
.find(".b")
.css("background","#fff")
});
Вышеприведенный пример в демонстрации http://jsbin.com/uvUTiGu/1/edit?html,css,output