jQuery: делает строку кликабельной, за исключением последнего столбца - PullRequest
6 голосов
/ 23 сентября 2011

Мне удалось сделать клики на строки в моей таблице и связать их с атрибутом href элемента <a>.Однако у меня начались проблемы, когда я заставил селектор выбирать только строки, кроме последнего столбца.

При использовании приведенного ниже кода активируемая щелчком строка активна только для всей строки, кроме последней, что и требуется, посколькуВ этой ячейке есть административные ссылки (ссылки для активации, редактирования, удаления и т. Д. Строк).Единственная проблема заключается в том, что независимо от того, какую строку вы нажимаете, она отправляет вас по ссылке в самом верхнем ряду.Я думаю, что это как-то связано с моим селектором для find('td a'), но я не могу понять это.

$('#dataTable tr td:not(:last-child)').click(function () {
    location.href = $('#dataTable tr').find('td a').attr('href');
});  

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

$('#dataTable tr td:not(:last-child)').hover(
    function() { 
        $(this).css('cursor','pointer');
    },
    function() {
        $(this).css('cursor','auto');
    }
);

Ответы [ 2 ]

10 голосов
/ 23 сентября 2011

Это потому, что вы получаете все tr в таблице, а затем будет возвращен первый найденный якорь, попробуйте изменить его следующим образом:

$('#dataTable tr td:not(:last-child)').click(function ()    {
 location.href = $(this).parent().find('td a').attr('href');
});

это означает, что он получит элемент $ (this), по которому щелкнули, как объект jquery, а затем перейдет к его родительскому элементу. (элемент строки).

1 голос
/ 23 сентября 2011
$('#dataTable tr td:not(:last-child)').click(function ()    {
 location.href = $(this).parent().find('td a').attr('href'); 
});  

Я думаю, что это должно работать.Ваш код всегда берет href с первого «td a», которое он находит внутри вашего dataTable.Этот код принимает a, который он находит в определенном тд, который вы ищете.

...