说我有以下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
另一种解决办法是阅读活动的目标click事件里面。下面是实现这种方式的一个例子:
$('div').click(function(e) {
if (e.target.nodeName != "span")
...
});
我想知道是否有像模糊的更优雅的解决方案()虽然。
您是否意识到这会将单击事件处理程序分配给*吨*元素?远非理想。 – 2010-01-13 21:25:55
他说他想要的只是跨度 – helloandre 2010-01-13 21:33:16
但是之后他应该利用事件冒泡来达到性能的原因。 – DanMan 2010-12-21 18:10:34