针对这个问题的跟进,我正在尝试实现一个不显眼的确认对话框。
$(document).ready(function () {
$("[data-confirmPrompt]").click(function (event) {
var confirmPrompt = event.currentTarget.attributes['data-confirmPrompt'].value;
event.preventDefault();
$.prompt(confirmPrompt, {
buttons: { Yes: true, No: false },
callback: function (v, m, f) {
if (v) {
// User clicked Yes. Unbind handler to avoid
// recursion, then click the target element again
$(event.currentTarget).unbind('click');
event.currentTarget.click();
}
}
});
});
});
当用户点击"Yes"后,我希望执行与该事件相关的默认操作。我已经通过解除jQuery处理程序并再次单击元素来实现。当提交表单或导航到不同页面时,这种方法可以正常工作,但在启用AJAX的页面中无法工作,因为我想保留jQuery事件处理程序。是否有一种通用的替代方法来执行默认操作?逻辑上类似于event.executeDefault()
。
.on('click',
和.off('click')
代替.click
和.unbind('click')
。然后给事件添加一个命名空间,像这样:.on('click.confirm',
。然后,在移除处理程序时,使用相同的命名空间--.off('click.confirm')
。这样只会解绑你刚刚注册的处理程序,而不是所有的jQuery处理程序--我怀疑你的Ajax调用仍然会起作用。这应该适用于jQuery 1.7版本。 - Codeblingevent.stopPropagation()
),然后return true
。 - jpaugh