1

我有一个双重事件要管理。这两个事件都是“点击”,它们是用 jquery 处理的。html如下:

 <div class="siteMap"  style="width:23%;">
            <h5>Divisione Anticontraffazione</h5>
            <span class="menufooter">
            <span class="link1"><a href="#scheda1">Introduzione</a></span><br>
            <span class="link2"><a href="#scheda2">Filosofia</a></span><br>
            <span class="link3"><a href="#scheda3">Negozio online</a></span></span><br>
        </div>

然后我有我的点击事件,它在 menufooter 范围内和每个链接范围内触发。代码是这样的:

$(document).ready(function() {
    $('span.menufooter').click(function() { 
        //my code here
    });
    $("span.link1").click(function() {
       //my code here
    });
});

我需要一个事件捕获操作,单击 span menufooter 必须在单击 span link1 触发之前触发该事件。此时,这两个事件都没有触发。有什么提示吗?

4

4 回答 4

4

只开火事件怎么样.menufooter

$(document).ready(function() {
    $('span.menufooter').click(function(e) { 
        //my code here 1

        // Capture Event Propagation
        if ( $("span .link1").find(e.target).length>0 ){
           //my code here 2
        };
    });
});

http://jsfiddle.net/9QLtG/

于 2013-12-20T15:36:18.690 回答
1

您可以防止单击冒泡,然后触发对父元素的单击,以便该处理程序中的任何内容首先执行(除非它是异步的)

$(document).ready(function () {
    $('.menufooter').click(function () {
        // fires before ....
    });

    $("span.link1").click(function (e) {
        e.stopPropagation();
        $('.menufooter').trigger('click');
        // .... this fires, as it's triggered above
    });
});

小提琴

于 2013-12-20T14:57:16.977 回答
0

试试这个event.stopPropagation();

 $("span.link1").click(function(event) {
     event.stopPropagation();
       ...
 });
于 2013-12-20T14:57:52.543 回答
0

我会有 1 个点击监听器来监听包装器。您可以检查事件的目标,看看他们是否真的点击了链接并相应地运行代码。

例如:

$(document).ready(function() {

    $('.container').click(function(e) {

        // Perform action when they clicked in the main wrapper,
        // regardless of whether or not it was a link.
        console.log("I clicked in the wrapper...");

        if ($(e.target).hasClass('link')) {
           // Perform action if they clicked on a link.   
           console.log("...but more specifically, on a link.");
        }
    });

});

这是一个证明这一点的小提琴:http: //jsfiddle.net/WaYFr/

于 2013-12-20T15:03:17.293 回答