4

我有一个案例,每当双击表格单元格时,我都需要使用部件号更新 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');
});

HTML 片段

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

2 回答 2

2

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

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

于 2012-05-22T13:39:02.873 回答
2

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

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

my_dlg.data("dialog").option("title", $(this).text()).open();
于 2012-05-22T13:44:31.843 回答