我有以下 jquery 代码为表中的每一行创建一个按钮:
$("#add_to_rule").click(function(){
var contact_type=$("#contact_types option:selected").val();
var email_address = $('#email_address').val();
var call_order = $('#call_order').val();
var htmlstring = '<tr>'
htmlstring = htmlstring + '<td><input type="button" value="Remove" class="removeruleset"/></td>'
htmlstring = htmlstring + '<td>' + contact_type + '</td>'
htmlstring = htmlstring + '<td>' + email_address + '</td>'
htmlstring = htmlstring + '<td>' + call_order + '</td>'
htmlstring = htmlstring + '</tr>'
$('#rule_summary tr:last').after(htmlstring);
});
然后,我有更多的 jquery 来处理删除按钮的 .click 事件:
$(".removeruleset").click(function(){
alert('inside');
id = $(this).closest('tr').attr('id');
alert(id);
});
向我的表中添加一行的代码以及删除按钮都有效。但是当我单击其中一个删除按钮时,它不会触发单击事件。
作为测试,我在 jquery 之外创建了一个像这样的按钮:
<input type="button" class="removeruleset" value="push me">
它触发点击事件没问题。你能告诉我哪里出错了吗?
谢谢你。
编辑 1
我尝试将代码更改为如下所示:
$(document).on("click", ".removeruleset", function(){
alert('inside');
id = $(this).closest('tr').attr('id');
alert(id);
});
但这给了我以下错误:
SCRIPT438:对象不支持“on”属性或方法
我使用的是 1.5.2 版。
所以,我参考了一些评论中提到的文章(动态创建元素上的事件绑定?)并尝试了这个:
$("body").delegate("click", ".removeruleset", function(e){
alert('inside');
id = $(this).closest('tr').attr('id');
alert(id);
});
那摆脱了错误消息,但仍然没有触发事件处理程序还尝试过:
$("body").on("click", ".removeruleset", function(e){
alert('inside');
id = $(this).closest('tr').attr('id');
alert(id);
});
谢谢。