【问题标题】:after loading a div, dialog box jquery ui wont open again加载div后,对话框jquery ui不会再次打开
【发布时间】:2014-07-16 03:09:32
【问题描述】:

我有一个表格中的调查结果列表。每个条目都有一个 EDIT 按钮,单击该按钮会打开一个对话框,其中包含从数据库加载的调查结果。编辑完答案后,我想点击对话框中的“保存”按钮,然后将编辑后的答案保存在数据库中,仅刷新我网站上的调查结果表。

当我重新加载整个页面时,一切正常,但是当我尝试只刷新表格时,我无法通过单击编辑按钮再打开对话框。

到目前为止,这是我的代码:

jQuery(document).ready(function($) {
$('body').on('click', '.edit_button', function () {
$("#dialog").dialog({

    autoOpen: false,
    width: 'auto',        
    buttons: {
        SAVE: function () {

            $.ajax({
                type: "POST",
                url: "admin/ajaxMethod/" + id,
                data: $('form.cForma1').serialize(),
                success: function () {                        
                    alert("success");

                    $("#tabela").load(location.href + " #tabela");
                    $("#dialog").dialog("close");
                },
                error: function () {
                    alert("failure");
                },                    
            });
        },
        CANCEL: function () {
            $(this).dialog("close");                
        },            
    }
});
});
});

当我输入 location.reload(); 而不是 $("#tabela").load(location.href + " #tabela"); $("#dialog").dialog( "close" ); 时,一切正常,但我只需要一个 div 即可重新加载表 div。

【问题讨论】:

  • 如果编辑按钮在表格内,则 jquery 事件绑定将在表格刷新功能上消失,再次绑定编辑按钮事件。
  • @Neha - 怎么做? tnx!
  • 你能在jsbin.com上重现这个问题吗?

标签: jquery html ajax dialog reload


【解决方案1】:

您正在通过页面中的$('yourEDITbutton').click(..) 将您的事件绑定到您的按钮。

您的javascript 代码不再起作用,因为您的按钮是动态创建的,而.click(..) 不适用于动态创建的元素。这里的解决方案如下:

$('body').on('click', '.yourEDITbuttonClass', function () {
    // Open your dialog box here
});

更详细的解释见jQuery documentation for .on()。

【讨论】:

  • 我编辑了我的代码,并尝试使用您的代码,但仍然无法正常工作! tnx!
  • 关于您更新的代码,它确实不起作用,因为您通过.click() 将点击事件绑定到您的按钮。如我上面的回答所述,此技术不适用于动态加载的元素。您如何尝试实施我提出的解决方案?
  • 它没有被编辑,我只是​​将这行$( ".edit_button" ).click(function() { 替换为$('body').on('click', '.edit_button', function () { 并且它不起作用!
  • 一般不工作还是在重新加载之前工作但在使用.load()之后不再工作?
  • 就像我没有改变任何东西一样,它第一次可以工作,然后它又不能工作,当我第二次点击编辑按钮时没有任何反应
【解决方案2】:

这听起来像是一个经典的 jQuery 事件绑定错误:

您将对话框绑定到单击“编辑”按钮。然后你重新加载表,之前的事件绑定就消失了。您要么需要再次绑定点击事件,要么将事件绑定到页面上未重新加载的元素,例如:

$(document).on('click', '.edit_button', function() {
    $('#dialog').dialog({ ... });
});

【讨论】:

  • 您能否分享更多您的代码或更好地提供显示错误的fiddle?
  • 我的代码基于这个link,除了点击他们的“创建帐户”按钮时,他们的“现有用户”表被刷新,而不是整个页面
  • 我的意思是,我正在尝试这样做,只刷新我的表格“调查”,就像他们只刷新“现有用户”一样
  • 它应该与我建议的代码更改一起使用。如果不访问您的页面以实时查看错误,我认为我无法做到更多。
  • 类似link,但对话框不会因为ajax中的url而启动
猜你喜欢
  • 2017-04-29
  • 2011-08-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-26
  • 2010-12-14
  • 2012-12-04
相关资源
最近更新 更多