Я считаю, что мой вопрос обратный этому: Предотвращение выполнения обработчика родительских событий
Я создаю пользовательский интерфейс в Google Apps Script. У меня есть поле выбора, внутри большего контейнера div. Я хочу, чтобы иметь возможность запускать анимацию с помощью jQuery при щелчке родительского div, но я не хочу, чтобы анимация запускалась при щелчке по элементу выбора. Я пробовал использовать stopPropagation, но это не помогло. В настоящее время анимация запускается при нажатии либо самого div, либо выпадающего списка выбора:
var ISDOWN = true; //global to track whether div is down or up
$("#outer-container").click(
function(e) {
e.stopPropagation();
var source = $(this).attr('id');
if (source === "outer-container"){
if (ISDOWN === true){
$("#outer-container").animate({top: "8px"});
ISDOWN = false;
}
else {
$("#outer-container").animate({top: "45px"});
ISDOWN = true;
}
}
});
Вы можете проверить щелчок элемента из целевого свойства объекта события
if ($(e.target).attr('id') === 'outer-container') {
if (ISDOWN === true){
$("#outer-container").animate({top: "8px"});
ISDOWN = false;
}
else {
$("#outer-container").animate({top: "45px"});
ISDOWN = true;
}
}
select
не всплывал в контейнере, вы должны прикрепить обработчикstopPropagation
кselect
и вызватьstopPropagation
.