数据追加w / o重新加载页面后的动态jQuery对话框。可能?

时间:2010-06-08 21:31:07

标签: jquery dialog append reload

所以我在一个CRUD界面中有一个巨大的表格。跨度中的每个链接都调用jQuery UI对话框表单,该表单从另一个页面获取其内容。当发生的操作(在这种情况下,创建)完成时,它会将生成的新数据附加到表中并强制执行该表。这一切都发生在JS和DOM中。

问题在于,新表行的CRUD链接实际上并不触发创建对话框表单,因为跨度中的所有原始链接仅在document.ready上扫描,因为我没有重新加载页面,无法看到新的链接。

代码如下:

$(document).ready(function() {
    var $loading = $('<img src="/images/loading.gif" alt="Loading">');
    $('span a').each(function() {
        var $dialog = $('<div></div>')
            .append($loading.clone());

        var $link = $(this).one('click', function() {
            // Dialog Stuff
            success: function(data) {
                $('#studies tbody').append(
                    '<tr>' +
                        '<td><span><a href="./?action=update&study=' + data.study_id + '" title="Update Study">Update</a></span></td>' +
                    '</tr>'
                );
                fdTableSort.init(#studies); // This re-sorts the table.
                $(this).dialog('close');
            }
            $link.click(function() {
                $dialog.dialog('open');
                return false;
            });

            return false;
        });
    });
});

基本上,我的问题是,是否有任何方法可以触发jQuery重新评估页面链接而不强迫我进行浏览器页面刷新?

2 个答案:

答案 0 :(得分:0)

如果我理解正确,我认为您可以稍微更改代码以使其适用于您:

$(document).ready(function() {
  var $loading = $('<img src="/images/loading.gif" alt="Loading">');
  $('span a').click(function() { //changed here
    var $dialog = $('<div></div>')
        .append($loading.clone());

    //rest of your code  
}

}

因此,通过这种方式,您的对话框将完全动态创建,并在跨越元素的click事件上附加到DOM。

问题的另一点是,如果对话框是浮动div(很可能),页面刷新可能会导致在提供页面后对话框不显示。所以你不想要,也买不起页面刷新。

答案 1 :(得分:0)

尝试通过jquery live函数绑定新创建的链接。