Javascript 带有onclick处理程序的元素顶部的链接
嘿。我遇到了一个愚蠢但棘手的问题 如果我有这种(简化的)情况:Javascript 带有onclick处理程序的元素顶部的链接,javascript,html,Javascript,Html,嘿。我遇到了一个愚蠢但棘手的问题 如果我有这种(简化的)情况: <div onclick="doSomething(); return false;"> lorem ipsum <a href="somewhere.html">dolor sit</a> amet </div> 同侧盲蝽 …是否有任何(方便的)方法可以防止在单击链接时触发父div的onclick处理程序 在我的场景中,我有一个大的包装div,它被做成一个带有oncli
<div onclick="doSomething(); return false;">
lorem ipsum <a href="somewhere.html">dolor sit</a> amet
</div>
同侧盲蝽
…是否有任何(方便的)方法可以防止在单击链接时触发父div的onclick处理程序
在我的场景中,我有一个大的包装div,它被做成一个带有onclick处理程序的“link”,但我想用其中的链接覆盖一些文本数据,但至少在Firefox中,当我单击文本中的链接时,首先执行父对象的onclick。哦,这是一个糟糕的HTML/行为嵌套。要么整个div可以作为一个元素单击,要么链接可以,但不能同时作为两个元素单击。。。除非您“取消嵌套”它们。IMHO,这是一个糟糕的HTML/行为嵌套。要么整个div可以作为一个元素单击,要么链接可以,但不能同时作为两个元素单击。。。除非您“取消嵌套”它们。使用jQuery,您可以向每个锚点添加一个单击处理程序,并使用它防止事件冒泡到DIV
$('div#wrapperDiv > a').click( function(event) {
event.stopPropagation();
});
使用jQuery,您可以向每个锚点添加一个单击处理程序,并使用它来防止事件冒泡到DIV
$('div#wrapperDiv > a').click( function(event) {
event.stopPropagation();
});
您可以通过在处理程序中测试事件的原始目标来解决这个问题。大致如下:
function doSomething ( e ) {
// get event object and target element
var e = e || window.event;
var target = e.srcElement || e.target;
// is target a div?
if ( target && /^div$/i.test( target.nodeName ) ) {
// do your magic in here ...
}
}
您可以通过在处理程序中测试事件的原始目标来解决这个问题。大致如下:
function doSomething ( e ) {
// get event object and target element
var e = e || window.event;
var target = e.srcElement || e.target;
// is target a div?
if ( target && /^div$/i.test( target.nodeName ) ) {
// do your magic in here ...
}
}
我认为OP认识到这一点(cf“dumb…problem”)。我认为OP认识到这一点(cf“dumb…problem”)。事件冒泡是问题-事件冒泡是问题-