当用户点击“自定义”链接时,我调用一个函数来打开一个对话框。当用户单击“保存”按钮时,该函数具有回调函数。这个回调返回一个obj。 我的问题是当你点击“自定义”1次时,你会得到一次obj,2次,两次返回,3次返回3 ......等等。
每次用户点击“自定义”后,我回调的回调是什么。
$(document).ready(function(){
$('#customize_link').click(function(){
var child_id = $(this).attr('child-id') * 1,
this_box = boxJson[child_id]['boxList'][0];
customize_box(this_box, function(obj){
boxJson[child_id]['boxList'][0] = obj;
box_dialog.dialog('close');
});
});
}); // end of doc.ready
function customize_box(obj, callback){
// bunch of code modifying obj...
$('#save_box_button').click(function(){
if(typeof callback == "function"){
return callback(obj);
}
});
}
vars (child_id, this_box)
仅针对每次点击实例化一次,但customize_box
obj返回count(clicks) 2, 3, 4, n...
多次点击box_customize_link
。
如何为box_customize_link
点击每次只收回一次obj?
答案 0 :(得分:1)
$('#save_box_button')
上的点击处理程序每次调用customize_box时都会附加,每次点击$('#customize_link')
时都会显示。
而不是$('#save_box_button').click(function(){
你应该使用
$('#save_box_button').one("click", function() { ...
这样,点击处理程序只会附加一次。
第二个选项是在重新附加之前删除可能存在的点击处理程序:
$('#save_box_button').off("click.savehandler").on("click.savehandler", function() { ...
注意域" savehandler"。它可以防止off
- 方法分离其他点击事件,我认为使用这种方法是一种很好的做法。