我有一个需要更新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();