我建立与复选框列表,创建列表后,我使用“每次”要经过所有这些,尝试应用点击程序。

这样我的代码正常工作:

$.ajax({
    url: "./views/todoitems.view.php",
    data: "cmd=list",
    success: function(html){
        $('#list-container').empty().append(html);
        $('input:checkbox').each(function(){
            $check = $(this);
            $check.click(function(){
                alert($(this).attr('itemid'));
            });
        });
    }
});

然而,当我改变警报是

alert($check.attr('itemid'));

这项功能只会显示在列表的最后一个项目的ID,无论是点击哪一个。 我在做什么错了?

有帮助吗?

解决方案

$检查被设定在每一个处理程序中,是一个全局变量。这意味着它会保留最后的值设定,是最后一个复选框。您需要设置它的点击处理程序中,如果你想这样做的权利。它更改为:

$.ajax({
  url: "./views/todoitems.view.php",
  data: "cmd=list",
  success: function(html) {
    $('#list-container').empty().append(html);
    $('input:checkbox').each(function(){
      $check.click(function() {
        var $check = $(this);
        alert($check.attr('itemid'));
      });
    });
  }
});

注意: var上面用来控制范围

此外,你不需要使用each()这一点。这相当于:

$.ajax({
  url: "./views/todoitems.view.php",
  data: "cmd=list",
  success: function(html) {
    $('#list-container').empty().append(html);
    $('input:checkbox').click(function() {
      alert($(this).attr('itemid'));
    });
  }
});

其他提示

要添加到克莱图斯的答案(我还不能发表评论)$支票成为一个隐含的全局变量,因为它的声明中缺少变种。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top