Я использую jQuery для реализации шаблона наблюдателя. Я запускаю пользовательское событие для $ ('body *'), потому что не известно, какие элементы будут реагировать на это событие. То есть я хочу, чтобы мои коллеги-разработчики добавили код для ответа на событие, и мне не нужно было об этом знать. Проблема, с которой я сталкиваюсь, заключается в том, что любые дочерние элементы элемента, связанного с пользовательским событием, выполняют обработчик. Есть ли способ убедиться, что эти дочерние элементы не выполняют обработчик? Имейте в виду, что я не могу вызвать сам элемент, потому что этот элемент неизвестен. Я бы хотел, чтобы целевые элементы не добавляли класс, если это возможно.
Вот пример кода:
<html>
<head>
<title>test</title>
<script src="http://code.jquery.com/jquery-1.4.4.js"></script>
<script>
$(function() {
$('#clickMe').click(function() {
$('body *').trigger('myCustomEvent');
});
$('#someDiv').bind('myCustomEvent', function(e) {
alert('someDiv responding to myCustomEvent');
});
$('#someOtherDivAddedBySomeOtherGuyLaterOn').bind('myCustomEvent', function() {
alert('someOtherDivAddedBySomeOtherGuyLaterOn responding to myCustomEvent');
});
});
</script>
</head>
<body>
<div id="someDiv">
<span>a span</span>
<span>another span</span>
</div>
<div id="someOtherDivAddedBySomeOtherGuyLaterOn">
<span>a span</span>
<span>another span</span>
</div>
<p><button type="button" id="clickMe">Click Me</button></p>
</body>
</html>