2013-11-01 2 views
4

Я хотел бы сделать мою таблицу row clickable. Все столбцы должны быть интерактивными, но первыми. Однако я хотел бы добиться этого, когда они нажимают на строку.Как выбрать все столбцы таблицы в строке, но первый с помощью jQuery?

Это код, который я до сих пор:

$('.table tbody tr').click(function (e) { 
     alert ($(this).find('td').eq(1).text()); 
    }); 

Этот код выполняется всегда независимо от того, где я нажимаю в строке. Однако мне бы хотелось, чтобы все ячейки таблицы были доступны для клика, кроме первого.

Возможно ли?

ответ

5

Вы могли бы сделать что-то вроде этого:

$('.table tbody tr').on('click', function(e) { 
    if ($(e.target).closest('td:first-child').length) { 
     return; 
    } 

    // your code 
}); 

Это говорит «если щелкнуть мышью элемент является td:first-child или имеет предка, который является td:first-child, ничего не делать, иначе продолжать.»

jsFiddle

+0

Это прекрасно работает! Удивительно, спасибо за этот код, я бы никогда об этом не подумал. +1 и принят! –

+0

Это действительно хороший ответ, и я никогда не знал, что '.closest()' проверил себя против селектора, переданного ему – billyonecan

+0

, это потрясающе, я бы никогда об этом не думал. –

1

Используйте CSS Не селектор и пропустить первый тр элемент:

$('.table tbody tr:not(:first-child)').click(function (e) { 
    alert ($(this).find('td').eq(1).text()); 
}); 
+1

Это пропускает первый ряд. OP хочет пропустить первый столбец (т. Е. Первый 'td' в каждом' tr'). – lonesomeday

+0

@lonesomeday Спасибо за это, я неправильно понял вопрос. +1 за ваш ответ. – juju

1

попробуйте использовать делегат события, как это,

$('.table tbody tr').delegate('td', 'click', function() { 
    alert ($(this).text()); 
    // implement your logic... 

});

Смежные вопросы