Javascript jquery选择器总是选择,即使它不应该选择

Javascript jquery选择器总是选择,即使它不应该选择,javascript,jquery,jquery-selectors,Javascript,Jquery,Jquery Selectors,当我再次单击值为Add的输入按钮时。它会像预期的那样再次发出警报。不应该这样,因为现在输入按钮的值是“添加”而不是“保存” 调整此选项以满足您的需要 在这里拉小提琴: 阅读关于事件委派的信息事件被绑定到元素,即使它不再与查询匹配,也会被保留。事实上,事件甚至不知道查询是什么,只知道它添加到的实际元素 可能的解决办法: 委托给父元素: $(document).on("click", "input[value='Save']", function(){ $(this).attr("value

当我再次单击值为Add的输入按钮时。它会像预期的那样再次发出警报。不应该这样,因为现在输入按钮的值是“添加”而不是“保存”

调整此选项以满足您的需要

在这里拉小提琴:


阅读关于事件委派的信息

事件被绑定到元素,即使它不再与查询匹配,也会被保留。事实上,事件甚至不知道查询是什么,只知道它添加到的实际元素

可能的解决办法:

委托给父元素:

$(document).on("click", "input[value='Save']", function(){
    $(this).attr("value", "Add");
    alert("clicked");
});
办理入住手续:

$("#question-proper table tr td").on('click', "input[value='Save']", function(){        
    var number = parseInt($(this).attr('data'));
    $(this).attr("value","Add");
    alert("Clicked");
});
使用
仅运行一次事件。一个

$("#question-proper table tr td input[value='Save']").on('click',function(){
    if($this).attr('value') !== 'Save') return;

    var number = parseInt($(this).attr('data'));
    $(this).attr("value","Add");
    alert("Clicked");
});

您已经将单击处理程序附加到该元素,只要不删除它,它就会保持附加状态。这与用于引用元素的选择器是否匹配无关。如果要使其成为动态的,请使用事件委派。@CBroe ahmm..谢谢:你能给我看看吗?我花了3个小时解决这个问题。我欠你的。注意:“bind”的过去式是“bind”(非bind)。@TrueBlueAussie谢谢,修正了。在这些小字体中,您可以直接编辑答案。
$("#question-proper table tr td input[value='Save']").on('click',function(){
    if($this).attr('value') !== 'Save') return;

    var number = parseInt($(this).attr('data'));
    $(this).attr("value","Add");
    alert("Clicked");
});
$("#question-proper table tr td input[value='Save']").one('click',function(){
    var number = parseInt($(this).attr('data'));
    $(this).attr("value","Add");
    alert("Clicked");
});