-1

我有以下 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);
    });

谢谢。

4

3 回答 3

2

尝试这个:-

$(document).on("click", ".removeruleset", function(){
            alert('inside');
            id = $(this).closest('tr').attr('id');
            alert(id);
    });

当您将事件添加到元素时,它不存在。要完成这项工作,您需要使用事件委托。

于 2013-06-11T19:30:15.613 回答
1

嗨,另一种方法是这样做 htmlstring = htmlstring + '<td><input type="button" value="Remove" class="removeruleset"click=\"myhandler\"/></td>'

其中 myhandler 是一个函数

function myhandler(){
 alert('inside');
            id = $(this).closest('tr').attr('id');
            alert(id);
}
于 2013-06-11T19:33:27.407 回答
-2

你可以试试这个动态控制。

$('#id').live('click', function() {

   ----your code--

})

否则你可以试试这个:

>>>$(document).on('click','#id', function() {

   -----your code ---

   })
于 2013-06-11T19:34:41.707 回答