Скажите, что у меня есть следующий HTML:
<div>
<span>span text</span> div text <span>some more text</span>
</div>
Я хочу сделать так, чтобы, когда я нажимал на интервал, он вызывал какое-то событие (например, чтобы сделать текст жирным), это просто:
$('span').click( ... )
Но теперь, когда я щелкаю по элементу, я хочу, чтобы другое событие сработало (например, чтобы текст стал нормальным). Мне нужно как-то обнаружить щелчок не внутри элемента span. Это очень похоже на событие blur (), но не для элементов INPUT. Я не против, если этот щелчок обнаружен только внутри элемента DIV, а не всего тела страницы, кстати.
Я попытался получить событие для запуска в элементах, отличных от SPAN, со следующим:
$('div').click( ... ) // triggers in the span element
$('div').not('span').click( ... ) // still triggers in the span element
$('div').add('span').click( ... ) // triggers first from span, then div
Другим решением было бы прочитать цель события внутри события click. Вот пример такой реализации:
$('div').click(function(e) {
if (e.target.nodeName != "span")
...
});
Мне было интересно, есть ли более элегантное решение, такое как blur ().