Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在不禁用其子DOM对象上的单击事件的情况下禁用父DOM对象上的单击事件?_Javascript_Jquery_Javascript Events - Fatal编程技术网

Javascript 如何在不禁用其子DOM对象上的单击事件的情况下禁用父DOM对象上的单击事件?

Javascript 如何在不禁用其子DOM对象上的单击事件的情况下禁用父DOM对象上的单击事件?,javascript,jquery,javascript-events,Javascript,Jquery,Javascript Events,我有一些类似这样的HTML: <a class="button"> <span> <span> <span class="buttonspan">Content</span> </span> </span> </a> $('a.button').click(function(event){ return false; }

我有一些类似这样的HTML:

<a class="button">
    <span>
        <span>
            <span class="buttonspan">Content</span>
        </span>
    </span>
</a>
$('a.button').click(function(event){
    return false;
});

$('.buttonspan').live('click', function(event){
    event.preventDefault();
    event.stopImmediatePropagation();
    // some function
});

如果我执行上面的代码,它也会阻止子元素click事件。但是,如果我不执行第一部分,也会触发父单击事件。有没有一种方法可以在不禁用新添加的子单击事件的情况下禁用父事件?

您可以在父按钮上设置单击事件,并使用事件目标来确定单击了什么并执行必要的操作

$('a.button').click(function(e) {
    var $target = $(e.target);

    if ($target.is('.buttonspan')) {
        // do actions for the .buttonspan click
    } else {
        // do actions for a click anywhere else inside a.button
        e.preventDefault();
    }
});

Maver,非常感谢您的快速回复。当我单击dom对象时,这个方法似乎有效,但是如果我使用jQuery触发器方法以编程方式触发click事件呢。例如:$('.buttonspan').trigger('click');。在这种情况下,它似乎不起作用。当通过编程触发.buttonspan的单击事件时,它仍应起作用。我只是做了一个测试来确定它确实工作正常。是的,马弗,还有其他问题。你的解决方案有效!谢谢