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

The jquery selector always selecting even it should not

本文关键字:不应该 选择 选择器 jquery      更新时间:2023-09-26
$("#question-proper table tr td input[value='Save']").on('click',function(){
        var number = parseInt($(this).attr('data'));
        $(this).attr("value","Add");
        alert("Clicked");
});

当我再次单击带有添加值的输入按钮时。它会在未预料到的情况下再次发出警报。不应该,因为输入按钮的值现在是"添加"而不是"保存"。

$(document).on("click", "input[value='Save']", function(){
    $(this).attr("value", "Add");
    alert("clicked");
});

调整以满足您的需求

在这里小提琴:http://jsfiddle.net/omofa2v9/

在此处阅读有关活动委派的信息

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

可能的解决方案:

委托给父元素:

$("#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");
});

使用.one仅运行一次事件:

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