关闭不能正常工作
Off doesn't work properly
我试图在表单提交前显示确认对话框:
$('body').on('submit', 'form[data-confirm-dialog-text]', (e) ->
form = $(this)
e.preventDefault()
$.show_dialog(form.data('confirm-dialog-title'), form.data('confirm-dialog-text'), form.data('ok-text'), form.data('cancel-text'), (->
form.off('submit').submit()
))
)
成功后,我执行以下操作:form.off('submit').submit()
,但不断收到确认对话框,这意味着表单未入站。
如果我将 $('body').on('submit', 'form[data-confirm-dialog-text]'
更改为 $('form[data-confirm-dialog-text]').on('submit',
,一切正常。有什么区别,我做错了什么?
来自 jQuery 的 .off()
文档:
The .off()
method removes event handlers that were attached with .on()
. Calling .off()
with no arguments removes all handlers attached to the elements. Specific event handlers can be removed on elements by providing combinations of event names, namespaces, selectors, or handler function names. When multiple filtering arguments are given, all of the arguments provided must match for the event handler to be removed.
这意味着您应该对 .off()
使用与 .on
相同的参数。所以,尝试改变:
form.off('submit').submit();
收件人:
$('body').off('submit', 'form[data-confirm-dialog-text]');
form.submit();
事件绑定到 body
,您应该使用从 body
中移除事件。所以改变,
form.off('submit').submit()
到
$('body').off('submit', 'form[data-confirm-dialog-text]');
form.submit();
我试图在表单提交前显示确认对话框:
$('body').on('submit', 'form[data-confirm-dialog-text]', (e) ->
form = $(this)
e.preventDefault()
$.show_dialog(form.data('confirm-dialog-title'), form.data('confirm-dialog-text'), form.data('ok-text'), form.data('cancel-text'), (->
form.off('submit').submit()
))
)
成功后,我执行以下操作:form.off('submit').submit()
,但不断收到确认对话框,这意味着表单未入站。
如果我将 $('body').on('submit', 'form[data-confirm-dialog-text]'
更改为 $('form[data-confirm-dialog-text]').on('submit',
,一切正常。有什么区别,我做错了什么?
来自 jQuery 的 .off()
文档:
The
.off()
method removes event handlers that were attached with.on()
. Calling.off()
with no arguments removes all handlers attached to the elements. Specific event handlers can be removed on elements by providing combinations of event names, namespaces, selectors, or handler function names. When multiple filtering arguments are given, all of the arguments provided must match for the event handler to be removed.
这意味着您应该对 .off()
使用与 .on
相同的参数。所以,尝试改变:
form.off('submit').submit();
收件人:
$('body').off('submit', 'form[data-confirm-dialog-text]');
form.submit();
事件绑定到 body
,您应该使用从 body
中移除事件。所以改变,
form.off('submit').submit()
到
$('body').off('submit', 'form[data-confirm-dialog-text]');
form.submit();