所有按钮都会调用警报功能

时间:2014-08-12 09:42:51

标签: javascript jquery alert

我动态添加按钮并为其设置事件:

$(document).on("click", ".del-but", remove);

在删除功能中,我有一个confirm对话框,为每个添加的按钮触发(3个按钮=> 3次)

function remove() {
            var buttonName = $(this).attr("name");
            if (!confirm("Are you  sure you want to remove this " + buttonName + "?\nAll the input will be lost!"))
                return;
            //stuff...
        }

虽然没有调用其余的代码(东西),只有对话框。如何阻止对话框多次触发?

function addCategory(btn) {            
            var $addCategory = "<fieldset>";
            $addCategory += "<legend>Category " + createRemoveButton("category") + "</legend>";
            $addCategory += '@Html.Label("Name")';
            $addCategory += '@Html.TextBox("name")';
            $addCategory += "<br />";
            $addCategory += addCategoryButton;
            $addCategory += addChartButton;
            $addCategory += "</fieldset>";            
            $(btn).parent().append($addCategory);
            $(document).one("click", ".del-but", remove);
            $(btn).siblings(".add-chart-but").remove();
        }

function createRemoveButton(name) {
            return "<button class=\"del-but\" type=\"button\" name =\"" + name + "\">Remove</button>";
        }

3 个答案:

答案 0 :(得分:0)

要从点击的按钮中删除该事件,您只需从中删除该类del-but,如下所示:

function remove() {
  // stuffs
  $(this).removeClass('del-but');
}

如果您将此类用于CSS或其他事物,请仅使用其他类来绑定和删除事件。希望这有帮助

答案 1 :(得分:0)

这是做什么的

$(document).one("click", ".del-but", remove);

在函数addCategory中,如果已使用

定义了事件
$(document).on("click", ".del-but", remove);

只需删除上一行。

答案 2 :(得分:0)

问题是你为在线调用的每个创建按钮函数创建事件;

$(document).one("click", ".del-but", remove);

您只需拨打一次足够的时间来使用此功能;

$(document).on("click", ".del-but", remove);

您可以在here

中查看