Я пытаюсь установить событие щелчка на отделении, и я хотел бы, чтобы то событие стреляло, если то отделение нажато где-нибудь кроме флажка в отделении. Если флажок нажат, я не хочу, чтобы событие щелчка отделения стреляло. Я устанавливаю событие щелчка на флажке и возвращенном false, который останавливает событие щелчка отделения, но не позволяет флажку становиться проверенным также. Вот то, что я имею теперь:
$('.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
})
Вместо того, чтобы возвращать false, что предотвращает действие по умолчанию, попробуйте просто остановить распространение.
$('.checkboxInTheDiv').click( function(e) {
e.stopPropagation();
... other stuff...
return true;
});
Вам нужно будет посмотреть на объект
, переданный в обработчик клика и посмотреть, какой тип имеется. Посмотрите на документацию Event.type для получения дополнительной информации.
function handler(event) {
var $target = $(event.target);
if( $target.is("li") ) {
$target.children().toggle();
}
}
$("ul").click(handler).find("li > ").h
Примечание. Код скопирован из связанного URL.