为什么在点击事件后警告弹出窗口几次?

时间:2011-05-03 17:36:49

标签: javascript jquery-plugins jquery javascript-events

在页面上有几个添加按钮(li .plus)。

当您点击“添加”按钮并假设json.success为false时,它将通过$.colorbox插件弹出

弹出窗口从href:"/Handle/Postcode/?val" + Val

中提取数据

弹出窗口中有一个提交按钮(#submitButton),当我点击提交按钮时,它会保持弹出警报框几次,我不明白为什么会发生这种情况?如何解决?

$("li .plus").click(function(event) {
    event.preventDefault();

    var Val;
    Val = $('#id').val()

        $.getJSON(Address +"/Handle/Add", {
            Val:Val
        }, function(json) {
            if (json.success == "false" && json.error == "NoArea") {
                $.colorbox({
                    width:"450px",
                    transition:"none",
                    opacity:"0.4",
                    href:"/Handle/Postcode/?val" + Val
                });
                $("#submitButton").live('click', function() {
                   var PostCodeArea = $("#deliveryAreaPostcode").val();
                    alert(PostCodeArea);
                    //Why does it popup a few times?
                });

            }

            if (json.success == "true") {
                Backet();
            }
        });
});

1 个答案:

答案 0 :(得分:3)

这很简单,因为你使用.live()函数来绑定你的点击处理程序。如果该代码执行多次,则绑定发生的次数不止一次。

您可以尝试跟踪绑定的状态,只有在它不存在时才应用它,或者您可以使用onClick attr调用html中的click函数。

编辑:只是为了澄清我的意思是 -

<强> HTML

 <button id='submitButton' onclick="displayAreaCode();">Submit</button>

<强> JS

function displayAreaCode(){
    var PostCodeArea = $("#deliveryAreaPostcode").val();
    alert(PostCodeArea);
}