我在jQuery UI对话框标题栏中添加了一个自定义按钮,如下所示:
$('#dialog').html(html);
$('#dialog').dialog({
modal: true,
open: function(event, ui) {
$(".ui-dialog-titlebar").append("<a href=\"#variants\" id=\"variants-button\"><img src=\"admin-images/variants-button.png\" alt=\"Variants\" /></a>");
}
});
现在我需要在此按钮上添加一个“点击”处理程序,但我正在努力解决这个问题。
$('#variants-button').click(function(){
$('#information').hide();
$('#variants').show();
return false;
});
这没有任何作用。我也尝试将点击处理程序放在'委托'中,但这也不起作用。有什么想法吗?
编辑:zysoft提供了正确的解决方案,但我需要在页面上使用多个对话框。它似乎没有多个对话框的预期效果。
答案 0 :(得分:2)
当对话框打开时,您的按钮会在运行时添加。它似乎发生在你分配点击处理程序后。试试这个:
$('#variants-button').live('click', function(){
$('#information').hide();
$('#variants').show();
return false;
});
答案 1 :(得分:2)
为什么不在添加新按钮后创建点击处理程序?
$('#dialog').html(html);
$('#dialog').dialog({
modal: true,
open: function(event, ui) {
$(".ui-dialog-titlebar").append("<a href=\"#variants\" id=\"variants-button\"><img src=\"admin-images/variants-button.png\" alt=\"Variants\" /></a>");
$('#variants-button').click(function(){
$('#information').hide();
$('#variants').show();
return false;
});
}
});
如果在将元素添加到DOM后添加事件处理程序,则应该没问题。
<强>更新强> 根据您的更新,如果您想对多个对话框标题按钮执行此类操作,则委托可能会更好(因为您将避免为每个对话框执行此操作)。
您可以将一个类应用于您的按钮(例如variant-class
),该按钮充当您将用作on
处理程序的选择器的标记类:
$('.variant-class').on('click', function() {
$('#information').hide();
$('#variants').show();
return false;
});
我希望这会有所帮助。祝你好运!
答案 2 :(得分:0)
在附加HTML后执行吗?如果没有,请尝试使用jQuery live insteed。
$('#variants-button').click(function(){
$('#information').hide();
$('#variants').show();
return false;
});