在事件上绑定jquery事件

时间:2012-11-01 19:21:32

标签: events jquery

我正在听一个点击事件。触发后,我需要绑定一个不同的事件(对于其他元素),但它会在第一个事件上继续触发。

我的代码:

$(".element1").on("click", function(){  
    console.log("triggered element1");  
    $(".element2").on("click", function(){  
        console.log("triggered element2");  
    })  
});

2 个答案:

答案 0 :(得分:1)

.element2的事件处理程序的单独副本将在每次单击.element1时绑定。如果要防止这种情况,请记住变量中是否已经绑定了处理程序。

var e2bound = false;
$(".element1").on("click", function(){  
    console.log("triggered element1");  
    if(!e2bound){
        $(".element2").on("click", function(){  
            console.log("triggered element2");  
        })
        e2bound=true;
    }
});

另一种解决方案是在第一个处理程序运行时取消绑定:

$(".element1").on("click", function e1handler(){  
    console.log("triggered element1");  
    $(this).off("click", e1handler);
    $(".element2").on("click", function(){  
        console.log("triggered element2");  
    })  
});

答案 1 :(得分:0)

尝试使用.off()删除该事件并使用e.stopPropgation()

$(".element1").on("click", function(){  
    console.log("triggered element1");  
    $(".element2").off('click').on("click", function(e){  
        e.stopPropagation();
        console.log("triggered element2");  
    })  
});

经常绑定和取消绑定是一种不好的做法..如果可能需要避免它... 如果你能展示HTML结构会更容易。