点击处理程序多次触发,取消绑定不起作用

时间:2013-11-19 23:51:17

标签: javascript jquery

我的jQuery点击处理程序出了问题。当我点击它时似乎不止一次射击。我尝试使用.unbind方法,但这破坏了我的其他jQuery。为什么会这样?我正在尝试构建一个计算器应用程序,我希望在单击时将数字推送到数组。该功能有效,它只是做了太多次。这是我的javascript。每个按钮都是一个带有它的复制类的div,即“7”按钮是.seven。

这是代码

$(document).ready(function(){
$("#hidden > div").mouseover(function(){
    $(this).css('background-color','red');
$("#hidden > div").mouseleave(function(){
    $(this).css('background-color','black');
$("div.seven").click(function(){
    primary.push(7);
});
$("div.eight").click(function(){
    primary.push(8);
});
$("div.nine").click(function(){
    primary.push(9);
});
$("#.equals").click(function(){
alert(primary);
});
});
});
});
</script>

1 个答案:

答案 0 :(得分:0)

因为每次鼠标进入div元素内的#hidden,您都会注册一个click / mouseleave处理程序。

在正常情况下,您不应在其中注册事件处理程序。

尝试

$(document).ready(function () {
    var primary = [];
    $("#hidden > div").mouseover(function () {
        $(this).css('background-color', 'red');
    });
    $("#hidden > div").mouseleave(function () {
        $(this).css('background-color', 'black');
    });
    $("div.seven").click(function () {
        primary.push(7);
    });
    $("div.eight").click(function () {
        primary.push(8);
    });
    $("div.nine").click(function () {
        primary.push(9);
    });
    $("#.equals").click(function () {
        alert(primary);
    });
});