【问题标题】:How to execute function after opening a jQueryUI Dialog?打开 jQueryUI 对话框后如何执行功能?
【发布时间】:2011-07-05 21:15:32
【问题描述】:

在我的网页上,我有一些链接,例如:

<div id="toolbarButtons">
    <a href="actualites/addLink" id="liens" rel="lien" title="Insérer un lien" class="toolbarButton"><span><img src="pub/struct/picto/icon_toolbar-link.gif" alt="Liens" />Lien</span></a>
    <a href="actualites/addImage" rel="image" title="Insérer une image" id="img" class="toolbarButton"><span><img src="pub/struct/picto/icon_toolbar-img.gif" alt="Liens" /> Image(s)</span></a>
</div>
<div id="dialogbox"></div>

首先我通过调用来初始化我的对话框:

initDialog : function() {
    $('#dialogbox').dialog({
        bgiframe:true,
        autoOpen:false,
        width:500,
        modal:true
    });
}

然后我在点击事件上附加对话框:

$('.toolbarButton').click(function(e){
            e.preventDefault();
            actu.dialogManager($(this));
});

dialogManager : function(elem) {

    elem.blur();
    var title   = elem.attr('title');
    var href    = elem.attr('href');
    var rel     = elem.attr('rel');

    $('#dialogbox').dialog('option','title',title);

    if(rel == 'lien')
    {
         $('#dialogbox').dialog('option','buttons',{
            'Add' : function(){
                            //TODO
            },
            'Cancel' : function(){
                $('#linkText').val('');
                $('#linkUrl').val('');
                $(this).dialog('close');
            }
        });

        $('#dialogbox').load(href).dialog('open');

    }
}

如您所见,对话框的内容是使用 ajax 获取的。该对话框包含一些输入。 我有一个最后一个函数,它应该编辑输入的内容,但我不知道如何以及在哪里调用它。需要在对话框打开后调用才有效。我该怎么做?

紧接着做

$('#dialogbox').load(href).dialog('open');

由于异步加载(在对话框完全加载之前调用)而无法工作。

感谢您的帮助。

【问题讨论】:

    标签: jquery jquery-ui dialog


    【解决方案1】:

    当对话框打开时你可以做一些事情。

    initDialog : function() {
      $('#dialogbox').dialog({
          bgiframe:true,
          autoOpen:false,
          open: function() {
              // do something on load
           },
          width:500,
          modal:true
      });
    }
    

    【讨论】:

      【解决方案2】:

      你可以这样做吗?

      $('#dialogbox').load(href, function() {
         //your edit function?
         $(this).dialog('open');
         });
      

      加载完成后会调用该函数。

      【讨论】:

      • 这不是答案。
      • 这实际上是正确的答案..问题的核心是他想在执行函数之前等待加载完成,为了做到这一点,加载回调应该用作显示在这里。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-17
      • 1970-01-01
      • 2013-06-09
      • 1970-01-01
      • 2011-10-18
      相关资源
      最近更新 更多