jQuery: сделать строку кликабельной, за исключением последнего столбца

мне удалось получить строки в моей таблице кликабельны и привязаны к 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 ответов


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

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

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


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

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