JQuery - Нажмите событие на div, но не на флажок в div - PullRequest
5 голосов
/ 11 января 2010

Я пытаюсь настроить событие щелчка на элементе div, и я бы хотел, чтобы это событие сработало, если этот элемент div щелкается где-либо, кроме флажка в элементе div. Если флажок установлен, я не хочу, чтобы событие click для div срабатывало. Я установил событие click для флажка и вернул false, что останавливает событие щелчка div, но также не позволяет флажку становиться отмеченным. Вот что у меня сейчас:

$('.theDiv').click(function() {
    // Click event for the div, I'm slide toggling something
    $('.sub-div', $(this)).slideToggle();
});

$('.checkboxInTheDiv').click(function() {
    // Do stuff for the checkbox click, but dont fire event above
    return false; // returning false won't check/uncheck the box when clicked
})

Ответы [ 3 ]

15 голосов
/ 11 января 2010

Вместо возврата false, что предотвращает действие по умолчанию, попробуйте просто остановить распространение.

$('.checkboxInTheDiv').click( function(e) {
    e.stopPropagation();
    ... other stuff...
    return true;
});
3 голосов
/ 11 января 2010

Вам нужно будет посмотреть на объект event, переданный в обработчик кликов, и посмотреть, какой это тип. Посмотрите документацию Event.Type для получения дополнительной информации.

function handler(event) {
  var $target = $(event.target);
  if( $target.is("li") ) {
    $target.children().toggle();
  }
}

$("ul").click(handler).find("li > ").h

Примечание. Код скопирован со связанного URL.

0 голосов
/ 11 января 2010

Попробуйте просто return;

...