Модификация элемента с помощью jQuery с использованием Event - PullRequest
0 голосов
/ 12 октября 2011

У меня есть таблица, настроенная таким образом, чтобы в каждой строке был флажок в качестве первого элемента в строке (например, почтовый ящик Gmail). <tr> этой строки имеет привязку и обработчик события щелчка, связанный с ним.

Я хочу, чтобы, когда пользователь нажимает на флажок, флажок становится установленным, и все. Когда пользователь щелкает в любом месте строки, он должен делать что-то еще. Я пытаюсь достичь этого, глядя на event.target проходящего события и проверяя, установлен ли этот флажок или нет. Однако в моей текущей реализации, когда пользователь нажимает на флажок, ничего не происходит, а когда он щелкает в любом месте строки, он ведет себя так, как я ожидаю.

Что я делаю не так в отношении флажка?

Вот мой код:

* * 1010

Спасибо за любую помощь, которую вы можете оказать.

Ответы [ 2 ]

0 голосов
/ 12 октября 2011

попробуй

$('.navTable tr').hover(function() { 
    if (!$(this).children('td').hasClass('spacer') && !$(this).children('th').length > 0) 
    $(this).css({background : "#EFEFEF", border : "1px solid #CCC"}); 
    },function() { 
            $(this).css({background : "", border : ""}); 
    }).closest('table')
        .delegate(':checkbox', 'change',function() { 
            var $checkbox = $(this),
            $td = $checkbox.closest('td'),
            $tr = $td.closest('tr');

        //If its not checked do something else.
        if($checkbox.not(':checked')) { 
      // Do something else 
    } 
    return false; 
}); 
0 голосов
/ 12 октября 2011

Почему бы вам не сделать отдельные обработчики щелчков для флажка и в других местах строки:

$('.navTable > tbody > tr input').click(function(e) {
    // do whatever you want here
    e.stopPropagation();
    alert("click checkbox");
})

$('.navTable tr').click(function(e) {
    // click in a row, that's not in the checkbox
    alert("click row");
})

Пример здесь: http://jsfiddle.net/jfriend00/KEu3a/.

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