jQuery:对同一个对象的链操作

时间:2013-03-05 12:21:05

标签: jquery chaining jquery-easyui

我知道jQuery链接已有各种各样的问题,但我找不到答案(可能相当简单)。原谅jQuery的新人。

我正在寻找的是将不同的动作/事件应用于同一对象的简短方法。更具体地说,我有以下代码

$('#dlg').dialog('open').dialog('setTitle','Title').dialog('refresh','dlg.html');

有没有办法不写三次.dialog,而是按照

的方式写
$('#dlg').dialog(action 1, action 2, etc.)

?我还不熟悉语法,所以我不知道参数是否需要用大括号,中间用分号,或逗号,或者......感谢任何帮助!

P.S。:此示例中的对话框是一个jQuery EasyUI对话框,如果这有任何区别。


更新:看到我的问题的答案似乎是“不”,那么编写上述命令的最佳方式是什么?即是

$('#dlg').dialog('open')
$('#dlg').dialog('setTitle','Title')
$('#dlg').dialog('refresh','dlg.html')
与上面的线相比效率更好/更差,还是还有另一种(更好的)方式?感谢您的快速帮助!

3 个答案:

答案 0 :(得分:2)

对于你正在做的事情,基本上没有其他选择。你可以用一个循环做一些疯狂的事情,但是在一天结束时它只会增加复杂性,除非你在整个代码中这样做了数百次,否则不值得付出努力。

我假设你知道你可以在一次调用中传递一个包含各种值的对象来初始化一个对话框,根据EasyUI文档:

$('#dd').dialog({  
    title: 'My Dialog',  
    width: 400,  
    height: 200,  
    closed: false,  
    cache: false,  
    href: 'get_content.php',  
    modal: true  
});  

答案 1 :(得分:1)

没有。在jQuery中没有办法实现这一点,但你可以检查任何支持的具体实现。

另一个测试解决方案是destroy,每次都会创建对话框。

$('#dlg').dialog('destroy');
$('#dlg').dialog({....})

答案 2 :(得分:0)

您可以一次性设置一些小部件参数,但之后仍然需要调用类似'open'的方法

$('#target').dialog(
    width: 400,  
    height: 200,
    title:,
    // ...
}); 
$('#target').open()
// ...

有关对话框参数和窗口小部件签名的信息,请参阅documentation