Jquery .live()仍然无法正确运行函数

时间:2011-08-19 02:08:23

标签: jquery ajax get live

虽然我看过其他类似的帖子,但我无法找到问题的确切原因/解决方案,所以我希望我不只是重新发布其他人提出的问题:

我最近发现在jquery中,.live()允许将我的函数附加到动态添加到页面中的项目。所以我有一个项目列表,我点击删除使用get函数,使用href作为get变量,然后从我的数据库中删除该项目并刷新列表。

因此,使用live函数,我设法将相同的函数添加到刷新列表中。但问题是指定要删除哪个项的get变量似乎停留在最后一个数字上。

所以如果我删除第13项,那么列表刷新,我尝试删除说第15项,似乎(来自firebug)get变量再次尝试删除第13项而不是15

对于要遵循的混乱代码道歉:


    $(document).ready(function() {

    $('.delav').live('click', function(e) {
        e.preventDefault();
                var pager = $(this).attr("href");
        $("#dialog2").dialog({
            autoOpen: false,
            width: 600,
            modal:true,
          buttons : {
            "Confirm" : function() {
                  $('#ava_list').html("Loading..");

            var pai =$('#epa_id').val();
                $.get("/_includes/functions.php", { table: "availability", pa: pai,delattr: pager} ,function(data) {$('#ava_list').html(data);});
            $(this).dialog("close");
            },
            "Cancel" : function() {
              $(this).dialog("close");
            }
          }
        });

        $("#dialog2").dialog("open");

    });
    });

2 个答案:

答案 0 :(得分:3)

看起来你有多个ID为'epa_id'的输入元素。如果是这种情况,您将需要删除重复的ID并使用DOM遍历来获取相对于所单击的.delav的正确元素。

对于特定的解决方案,我们需要查看您的标记。

答案 1 :(得分:2)

而不是使用$ .live(),JQuery引用建议使用委托

    $('.highlevelclasshere').delegate('click', function(e) {
       e.preventDefault();
       var pager = $(this).attr("href");
        $("#dialog2").dialog({
           autoOpen: false,
           width: 600,
           modal:true,
        buttons : {
        "Confirm" : function() {
              $('#ava_list').html("Loading..");

        var pai =$('#epa_id').val();
            $.get("/_includes/functions.php", { table: "availability", pa: pai,delattr:         pager} ,function(data) {$('#ava_list').html(data);});
        $(this).dialog("close");
        },
        "Cancel" : function() {
          $(this).dialog("close");
        }
      }
    });

    $("#dialog2").dialog("open");

});