Вы можете использовать stopPropagation()
так:
$('.redBG').click(
function() {
$(this).toggleClass('grayBG');
});
$('.yellowIcon').click(
function (e) {
e.stopPropagation();
$(this).toggleClass('greenBG');
});
.redBG {
background-color:red;
width: 300px;
height:30px;
z-index: 1;
}
.grayBG {
background-color: gray;
}
.yellowIcon {
background-color:yellow;
width: 20px;
height:20px;
cursor: pointer;
z-index:20;
}
.greenBG {
background-color:green
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<div class="redBG">
<div class="yellowIcon"></div>
</div>
event.stopPropagation()
предотвращает событие от бурлит дерева DOM. Для справки: http://api.jquery.com/event.stoppropagation/
На вопрос в комментарии, чтобы объяснить e
в этой функции: если вы проверить предоставленную ссылку на API JQuery вы заметите, что там написано, как следует для примера, приведенного:
$("p").click(function(event) {
event.stopPropagation();
// Do something
});
Обратите внимание, что это не нужно явно написать function(event)
- параметр функции в этих обозначениях являетсяclick()
события. Многие люди склонны сокращать event
с e
, так как stopPropation()
только что вызвано событием, которое является параметром function()
, вызванным в click(function(){});
.
Для иллюстрации я только что добавил сообщение журнала console.log(e);
в этом Fiddle для события click()
. При нажатии на .yellowIcon
, вы увидите сообщение консоли
Object { originalEvent=Event click, type="click", ....}
Так e
является только объект события передается click()
.
Если вы изменили click()
, например. hover()
, сообщение консоли
Object { originalEvent=Event mouseover, type="mouseenter", ...}
Object { originalEvent=Event mouseover, type="mouseleave", ...}
Для дальнейшего и более подробной информации Вы можете проверить http://api.jquery.com/category/events/event-object/
Спасибо, Маттиас очень за вашу помощь! Он работает так, как ожидалось. Не могли бы вы объяснить «e» в этой функции? Благодарю. –
@abcidd Я рад, что смог помочь.Я только что обновил свой ответ с объяснением функции 'e' в функции, поскольку было бы слишком долго публиковать ее как комментарий. –
Большое спасибо, Маттиас! Ваше объяснение очень ясное и прямое. –