我有一个jqModal对话框,其中包含以下代码:
$(document).ready( function() {
$('td.item.active').click( function(e) {
$(this).append( '<div class="new"> </div>' );
$("#jqModal").jqm({
modal:true,
onHide: function(e) {
e.w.hide(); // Hide window
e.o.remove(); // Remove overlay
}
});
$('#jqModal').jqmShow();
$('input#add_session').click( function(e) {
e.preventDefault();
$('#jqModal').hide();
$('.jqmOverlay').remove();
});
});
});
使用的HTML如下:
<div id="jqModal" class="jqmWindow">
<form action="" method="post">
<ul>
<li>
<input id="add_session" name="commit" type="submit" value="Add Session" /> <input type="button" name="close" value="Close" id="close" class="jqmClose" />
</li>
</ul>
</form>
</div>
当我第一次点击<td>
时,对话框会毫无问题地启动。在第二次单击(或后续)时,new
类将添加到<div>
,但对话框不会启动。
答案 0 :(得分:2)
在黑暗中拍摄,如果你说的是没有重新创建模态,请不要手动破坏它,而是调用它的.jqdHide()
方法。此外,您的input
点击处理程序位于<td>
的点击处理程序中,不确定这是否是故意的,以修复将代码调整为:
$(function() {
$('td.item.active').click( function(e) {
$(this).append( '<div class="new"> </div>' );
$("#jqModal").jqm({
modal:true,
onHide: function(e) {
e.w.hide(); // Hide window
e.o.remove(); // Remove overlay
}
}).jqmShow();
});
$('input#add_session').click( function(e) {
e.preventDefault();
$('#jqModal').jqmHide();
});
});
如果您在代码中添加 <td>
元素并且没有针对它们触发点击处理程序,那么您需要使用.live()
以便处理程序处理具有该类组合的当前和未来<td>
元素,因此不是:
$('td.item.active').click( function(e) {
你会这样称呼:
$('td.item.active').live('click', function(e) {