里面的JQuery点击事件

我真的不知道发生了什么事……

代码如下:

for (var j=0; j<tours.length; j++){ var name = tours[j].name; var $tourLI = $('
  • '); var $tourButton = $('
    '+name+'
    '); $tourButton.click(function() { alert(name); } }

    我试图为显示游览名称的每个按钮绑定click事件,但总是显示最后一个游览名称,无论我点击哪个按钮。

    我究竟做错了什么?

    谢谢!

    在for循环移动之前,您需要将click处理程序包装在一个闭包中以“关闭”变量name的值。

    这是因为在你点击它之前实际上并没有执行处理程序,所以否则它将只使用当时name的当前值(无论循环中的最后一个值是什么)。

     for (var j=0; j'); var $tourButton = $('
    '+name+'
    '); (function(n) { $tourButton.click(function() { alert(n); }); })(name) }

    当点击被触发时, j将具有值tours.length 。 您可以通过闭包锁定循环值以及其余变量。

     for (var j=0; j'); var $tourButton = $('
    '+name+'
    '); $tourButton.click(function() { alert(name); } })(); }

    试试这个…

     $('.div.button-inside ').on('click',function() { alert($(this).text()); } 

    无需在循环内调用click事件。覆盖动态创建的按钮并在循环外调用它并使用委托事件

    试试这个

      $(document).on('click','div.button-inside',function() { alert($(this).text()); } 

    如果您想了解有关委托活动的更多信息,可以浏览链接 …