Jquery ui jQuery UI对话框-关闭时的事件问题
我试图在关闭jQuery UI对话框时执行特定操作。以下是我的代码的简化版本:Jquery ui jQuery UI对话框-关闭时的事件问题,jquery-ui,jquery-ui-dialog,Jquery Ui,Jquery Ui Dialog,我试图在关闭jQuery UI对话框时执行特定操作。以下是我的代码的简化版本: $('a.open-trigger').click(function(){ var test = 'hello'; $('#dialog').dialog({ bgiframe: true, dialogClass: 'change', resizable: false, draggable: false, modal
$('a.open-trigger').click(function(){
var test = 'hello';
$('#dialog').dialog({
bgiframe: true,
dialogClass: 'change',
resizable: false,
draggable: false,
modal: true,
height: 334,
width: 450,
autoOpen: false,
show: 'fade'
});
$('#dialog').dialog('open');
$('a.close-trigger').click(function(){
alert(test);
$('#dialog').dialog('close');
});
});
当我第一次关闭对话框时,我得到了预期的带有单词“hello”的警报。如果我再次打开并关闭对话框,我会收到两次“hello”警报。如果我第三次打开和关闭它,我会收到三个警报,以此类推
为什么这些警报会自我复制?我希望警报在关闭时只显示一次,无论我打开/关闭对话框多少次
谢谢!
Simon每次调用
时都会附加额外的事件处理程序。单击。这就是它复制的原因
$('a.close-trigger').click(function(){
alert(test);
$('#dialog').dialog('close');
});
将该代码拉到与其他事件绑定相同的级别,它应该可以正常工作。每次调用时都会附加额外的事件处理程序。单击。这就是它复制的原因
$('a.close-trigger').click(function(){
alert(test);
$('#dialog').dialog('close');
});
将该代码拉到与另一个事件绑定相同的级别上,它应该可以按预期工作。您已将一个函数绑定到打开按钮,该函数在每次触发打开事件时向关闭按钮添加一个事件处理程序。您应该将关闭事件处理程序添加到“a.open-trigger”事件函数之外的某个位置
$('a.open-trigger').click(function(){
var test = 'hello';
$('#dialog').dialog({bgiframe: true, dialogClass: 'change', resizable: false, draggable: false, modal: true, height: 334, width: 450, autoOpen: false, show: 'fade'});
$('#dialog').dialog('open');
});
$('a.close-trigger').click(function(){
alert(test);
$('#dialog').dialog('close');
});
您已将一个函数绑定到“打开”按钮,该按钮在每次触发“打开”事件时向“关闭”按钮添加一个事件处理程序。您应该将关闭事件处理程序添加到“a.open-trigger”事件函数之外的某个位置
$('a.open-trigger').click(function(){
var test = 'hello';
$('#dialog').dialog({bgiframe: true, dialogClass: 'change', resizable: false, draggable: false, modal: true, height: 334, width: 450, autoOpen: false, show: 'fade'});
$('#dialog').dialog('open');
});
$('a.close-trigger').click(function(){
alert(test);
$('#dialog').dialog('close');
});
您需要将关闭单击事件处理程序从打开单击事件处理程序中取出
$(function() {
$('#dialog').dialog({bgiframe: true, dialogClass: 'change', resizable: false, draggable: false, modal: true, height: 334, width: 450, autoOpen: false, show: 'fade'});
$('a.open-trigger').click(function(){
$('#dialog').dialog('open');
});
$('a.close-trigger').click(function(){
alert("hello");
var myDialog = $('#dialog');
if (myDialog.dialog('isOpen'))
myDialog.dialog('close');
});
});
您需要将关闭单击事件处理程序从打开单击事件处理程序中取出
$(function() {
$('#dialog').dialog({bgiframe: true, dialogClass: 'change', resizable: false, draggable: false, modal: true, height: 334, width: 450, autoOpen: false, show: 'fade'});
$('a.open-trigger').click(function(){
$('#dialog').dialog('open');
});
$('a.close-trigger').click(function(){
alert("hello");
var myDialog = $('#dialog');
if (myDialog.dialog('isOpen'))
myDialog.dialog('close');
});
});