如何在一次函数调用中组合 jQuery UI 对话框标题更改和打开



我有一个需要更新jQuery UI标题的情况双击表格单元格时带有部件号的对话框。标题将从表格单元格的值本身获取。

来自实际代码的这个片段(如下)有效,但它只是没有对我来说似乎是正确的,因为我必须调用对话框函数两次:(1)以更改标题,然后 (2) 打开对话框。

有没有更好的方法将这两个操作与单个调用结合起来.dialog()?

JS代码段

// Dialog declaration
var my_dlg = $('<div id="my-dlg">')
  .html(
    '<span class="part">FOO BAR</span>'
  )
  .dialog({
    autoOpen: false,
    title: 'Default Title',
    modal: true
  });
// Event handler
$('td.part').live('dblclick', function(){
  $(my_dlg)
    .dialog('option','title', $(this).text())
    .dialog('open');
});

网页代码段

<table>
<tr><td class="part">AB123456</td></tr>
<tr><td class="part">GX443459</td></tr>
<tr><td class="part">SK555455</td></tr>
</table>
这是

正确/唯一的方法,因为您有 2 个事件,对话框本身打开,然后单击表格单元格。这也是在实例化 jQuery UI 对话框中的任何选项后更改任何选项的正确方法。

你唯一不必要的事情是在第二次使用它时卡在$() my_dlg,它不需要,因为它已经是一个jQuery对象。

这是调用小部件方法的标准方法。给定小部件公开的所有方法(在您的例子中dialog)都桥接到小部件名称下的$.fn中,以便它们可以应用于jQuery对象。

但是,如果你想避免重复调用dialog(),你可以获取对 widget 实例的引用并直接调用其方法:

my_dlg.data("dialog").option("title", $(this).text()).open();

最新更新