У меня есть два divs, внутренний и внешний:
<div id="outer">
<div id="inner"></div>
</div>
С некоторыми CSS, чтобы вы могли видеть, что именно:
#outer {
width: 250px;
height: 250px;
padding: 50px;
background: yellow;
}
#inner {
width: 250px;
height: 250px;
background: blue;
}
Я пытаюсь остановить распространение событий mousedown и mouseup из обработчика click следующим образом:
$('#inner').on('click', function(e) {
e.stopPropagation();
$(this).css({'background': 'green'});
return false;
});
$('#outer').on('mousedown', function(e) {
$(this).css({'background': 'green'});
});
$('#outer').on('mouseup', function(e) {
$(this).css({'background': 'yellow'});
});
Это не представляется возможным. То, что работает, вызывает .stopPropagation из других вызовов mousedown и mouseup, как показано здесь (другое DEMO):
$('#inner').on('mousedown', function(e) {
e.stopPropagation();
return false;
});
$('#inner').on('mouseup', function(e) {
e.stopPropagation();
return false;
});
Возможно, я уже ответил на свой вопрос, но я не уверен, что мой подход является лучшим или самым разумным. Это правильный способ остановить событие, пузырящееся до mousedown и mouseup?