Скажем, у меня есть следующий HTML:Обнаружение фона нажмите на JQuery
<div>
<span>span text</span> div text <span>some more text</span>
</div>
Я хочу сделать так, чтобы, когда я нажимаю на пролете, это вызовет какое-либо событие (например, чтобы сделать текст жирным шрифтом), это легко:
$('span').click(...)
Но теперь я, когда я нажимаю от элемента, я хочу еще одно событие, чтобы вызвать (например, чтобы сделать нормальный вес текста). Мне нужно каким-то образом обнаружить клик не внутри элемента span. Это очень похоже на событие blur(), но не для элементов INPUT. Я не против, если этот клик обнаружен только внутри элемента DIV, а не всего BODY страницы, кстати.
Я пытался получить событие, чтобы вызвать в не 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
Другим решением было бы читать цель мероприятия внутри события щелчка. Вот пример реализации так:
$('div').click(function(e) {
if (e.target.nodeName != "span")
...
});
мне было интересно, если есть более элегантное решение, как размытие(), хотя.
Вы понимаете, что это назначит обработчикам событий щелчка на * тонну элементов? Далек от идеала. –
он сказал, что хочет чего-то, кроме пролета – helloandre
Но тогда он должен использовать пузырьки событий по соображениям производительности. – DanMan