如何在jQuery中选择一个元素并执行匿名函数,而不将其绑定到事件?
假设我有一个有两个锚的div:如何在jQuery中选择一个元素并执行匿名函数,而不将其绑定到事件?,jquery,jquery-ui,Jquery,Jquery Ui,假设我有一个有两个锚的div: <div id="#dialog"> <a href="#" class="ok">Delete</a> <a href="#" class="cancel">Cancel</a> </div> 我希望能够将其合并为以下内容: $('#dialog').execute(function() { var dialog = $(this); dialog.fin
<div id="#dialog">
<a href="#" class="ok">Delete</a>
<a href="#" class="cancel">Cancel</a>
</div>
我希望能够将其合并为以下内容:
$('#dialog').execute(function() {
var dialog = $(this);
dialog.find('a.ok').click(function() {
$.ajax({ ... });
dialog.dialog('close');
});
dialog.find('a.cancel').click(function() {
dialog.dialog('close');
});
});
伪execute()
函数将立即执行匿名函数,而不会将其绑定到DOM事件。我希望使用此模式将相关函数分组在一起(在本例中,对话框中有两个相互关系非常密切的按钮)
我的问题有两个:
您不需要任何特殊的jQuery内容,只需编写一个函数并将其作为参数提供给
$(“#dialog”)
:
function do_stuff(dialog) {
dialog.find('a.ok').click(function() {
$.ajax({ ... });
dialog.dialog('close');
});
dialog.find('a.cancel').click(function() {
dialog.dialog('close');
});
}
do_stuff($('#dialog'));
或者,如果您真的喜欢匿名函数,您可以使用:
但是将每个与只能匹配单个元素的选择器一起使用看起来很有趣。您还可以定义自己的自执行函数:
(function(dialog) {
dialog.find('a.ok').click(function() {
$.ajax({ ... });
dialog.dialog('close');
});
dialog.find('a.cancel').click(function() {
dialog.dialog('close');
});
})($('#dialog'));
这里没有最好的,你使用适合你的特殊情况和当地习俗的东西。问得好!我不知道这是否是最好的方法,但是
.each(function(){…})
应该可以工作。
$('#dialog').each(function() {
var dialog = $(this);
dialog.find('a.ok').click(function() {
$.ajax({ ... });
dialog.dialog('close');
});
dialog.find('a.cancel').click(function() {
dialog.dialog('close');
});
});
(function(dialog) {
dialog.find('a.ok').click(function() {
$.ajax({ ... });
dialog.dialog('close');
});
dialog.find('a.cancel').click(function() {
dialog.dialog('close');
});
})($('#dialog'));