处理jQuery中附加元素的click事件

我使用以下方法在页面中生成了一些元素。 例如,

$("#button"+caption).click(function(){ var firstDisplay = '
    '; for(var i=0;i<parents.length;i++){ firstDisplay=firstDisplay+'
  • '+parents[i]+'
  • '; } firstDisplay=firstDisplay+'
'; $(firstDisplay).dialog(); });

当我为’fClass’创建一个onclick事件时,如下所示:

 $(".fClick").click(function(){ alert("hey!"); }); 

它不起作用! 但是,如果我将onclick函数放在其他函数中,就在.dialog()之后,它就可以工作了! 我有很多以这种方式创建的元素,所以我不能将所有onclick事件放在一个方法中。 有没有办法解决? 我也遇到了与.append方法相同的问题。

根据您使用的jQuery版本将其更改为.on.delegate

截至jQuery 1.7+

 $(document).on('click', '.fClick', function(){ alert("hey!"); }); 

对于较旧的jQuery版本,请使用委托

 $(document).delegate('.fClick', 'click', function(){ alert("hey!"); }); 

使用而不是click

 $(".fClick").on('click',function(){ alert("hey!"); }); 

click添加单击处理程序到.fClick当您调用$('.fClick').click({...})时存在的元素$('.fClick').click({...}).fClick添加的新.fClick元素将不具有click事件。 但是当你使用on ,所有.fClick元素都会有一个点击处理程序,即使它们稍后添加。
点击此处了解更多信息: http : //api.jquery.com/on/

再次调用$(document).ready(function()并在那里添加代码。文档再次被读取(刷新),你可以在那里应用你的代码。

Vega所说的完全正常。 有一个提示:我认为在第二行有一个错误。 可能你可以使用addClass方法,因为你不能在渲染中放入id或类。 这是一个例子:

 var content = "
Hello, World
"; $("div").after(content); $("last:div").addClass("mydiv");

并且将添加该类,但我不确定您是否可以添加ID。