我使用以下方法在页面中生成了一些元素。例如,
$("#button"+caption).click(function(){
var firstDisplay = '<div id="firstDisp'+caption+'"><ul>';
for(var i=0;i<parents.length;i++){
firstDisplay=firstDisplay+'<li class="fClick">'+parents[i]+'</li>';
}
firstDisplay=firstDisplay+'</ul></div>';
$(firstDisplay).dialog();
});
当我为'fClass'创建一个onclick事件时,如下所示:
$(".fClick").click(function(){
alert("hey!");
});
它不起作用!但是,如果我把onclick函数放在其他函数中,就在.dialog()之后,它就可以工作了!我有很多以这种方式创建的元素,所以我不能将所有onclick事件放在一个方法中。有没有办法解决?我也遇到了与.append方法相同的问题。
答案 0 :(得分:64)
根据您使用的jQuery版本将其更改为.on
或.delegate
。
从jQuery 1.7 +开始
$(document).on('click', '.fClick', function(){
alert("hey!");
});
对于较旧的jQuery版本,请使用委托
$(document).delegate('.fClick', 'click', function(){
alert("hey!");
});
答案 1 :(得分:0)
使用on
代替click
:
$(".fClick").on('click',function(){
alert("hey!");
});
click
为您致电.fClick
时出现的$('.fClick').click({...})
元素添加了点击处理程序。稍后添加的新.fClick
元素将不具有click事件。但是当您使用on
时,所有.fClick
元素都会有一个点击处理程序,即使它们稍后添加。
在此处阅读更多内容:http://api.jquery.com/on/
答案 2 :(得分:0)
再次调用$(document).ready(function()并在那里添加代码。 该文档再次被读取(刷新),您可以在那里应用您的代码。
答案 3 :(得分:0)
Vega所说的完全正常。 有一个提示: 我认为在第二行有一个错误。 可能你可以使用addClass方法,因为你不能在渲染中放入id或类。 这是一个例子:
var content = "<div>Hello, World</div>";
$("div").after(content);
$("last:div").addClass("mydiv");
该课程将被添加,但我不确定您是否可以添加ID。