JQuery Dynamic Dialog Div

时间:2011-07-22 04:50:10

标签: jquery jquery-ui jquery-dialog

背景
在页面上使用php动态创建带有行的表。 使用 jquery-ui-1.8.14.custom.min.js jquery-1.5.1.min.js

目标: 我希望能够点击一行,它将使用php页面中的新内容更新Jquery Ui对话框div,然后在Jquery Ui对话框中显示该内容。

$(function(){
  $('tr').live('click', function(){
    $('.ui-dialog').load('<?php echo base_url();?>index.php/a/b/1');
    $('.ui-dialog').dialog('open');
  });
});

此代码使对话框显示和消失非常快,而不会停止。 我也尝试过以下我认为可行的方法:

$(function(){
  $('tr').live('click', function(){
    $('.ui-dialog').load('<?php echo base_url();?>index.php/a/b/1',
      function(){
        $('.ui-dialog').dialog('open')
    });
  });
});

对话框代码:

$(function(){$('.ui-dialog').dialog({
        autoOpen: false,
        width: 600,
        draggable: true,
        resizable: true,
        open: function(){
                        $('.ui-widget-overlay').fadeIn();},
        beforeClose: function(){
                        $('.ui-widget-overlay').fadeOut();},
        show: "fade",
        hide: "fade", 
        buttons: {
        "Back to search": function() { 
            $(this).dialog("close"); }
        }
    })});

非常感谢任何帮助。感谢。

2 个答案:

答案 0 :(得分:1)

当您初始化时:

$(function(){$('.ui-dialog').dialog({
    autoOpen: false,
    width: 600,
    draggable: true,
    resizable: true,
    open: function(){
                    $('.ui-widget-overlay').fadeIn();},
    beforeClose: function(){
                    $('.ui-widget-overlay').fadeOut();},
    show: "fade",
    hide: "fade", 
    buttons: {
    "Back to search": function() { 
        $(this).dialog("close"); }
    }
})});

.ui-dialog删除它时,它会向.load()添加HTML。

您需要做的是将初始化代码放在 ajax加载之后,或者:

$(function(){
  $('tr').live('click', function(){
    $('.ui-dialog .ui-dialog-content').load('<?php echo base_url();?>index.php/a/b/1',
      function(){
        $('.ui-dialog').dialog('open')
    });
  });
});

http://jsfiddle.net/hgeYs/4/

答案 1 :(得分:0)

类似这样的事情

$(function() {
    $('tr').live('click', function() {
        var obj = $('<div/>');
        obj.load('<?php echo base_url();?>index.php/a/b/1', function() {
            obj.dialog({
                close: function(event, ui) {
                    $(this).dialog("destroy")
                }
            })
        })
    })
})