jquery 如何正确地使计数函数对所有动态生成的按钮起作用?

yrdbyhpb  于 2022-11-29  发布在  jQuery
关注(0)|答案(1)|浏览(76)

我写了一个代码,每次按下按钮时加1,按钮也是动态生成的,表行也是如此。问题是,如果有第二行或第三行,我不能使函数正常工作。我知道问题是,每个按钮都有相同的类,因此计数总是从其他按钮停止的地方开始。

$("form").submit(function(e){  
    e.preventDefault();  
    var name = $("input[name='name']").val(); 
     
   
    $(".data-table tbody").append("<tr data-name='"+name+"' class='vote'><td>"+name+"</td><td><button class='but' id="+name+">VOTE</button></td><td><button class='btn btn-info btn-xs btn-edit'>Edit</button><button class='btn btn-danger btn-xs btn-delete'>Delete</button></td><td></td></tr>");  
    $("input[name='name']").val(''); 
    });
// the code to count
let count = 1;
$("tbody").on("click", ".but", function(){

        $(this).parents("tr").find("td:eq(3)").html('<span>'+count+'</span>');
        return count++;
        
    });

要明确的是...... #1姓名按钮计数约翰4简0

2在一次按下按钮后对简姓名按钮计数约翰4简5我希望能够计数的数字从1时按下她的相应按钮

我也尝试不使用任何插件
谢谢你的帮助。

2guxujil

2guxujil1#

第一个替换

`<button class='but' id="+name+">VOTE</button> `

<button class='but' id="+name+" data-count="clicked-0">VOTE</button>

现在你的"计数器代码"

$("tbody").on("click", ".but", function() {
    let obj = $(this);
    let clicks = obj.attr('data-count').replace('clicked-','');
    clicks++;
    obj.attr('data-count','clicked-'+clicks);
    obj.parents("tr").find("td:eq(3)").html('<span>' + clicks + '</span>');
});

相关问题