为什么这个解体不起作用?
我几分钟前尝试回答这个问题并为自己准备了这个例子:
function trialMethod() { alert('On Submit Run!'); return true; } function trialMethod2() { alert('On Submit Run trialMethod2!'); return true; }
为什么第一个解除绑定不起作用:
但是这个适用于trialMethod2方法:
由于jQuery的事件模型,第一个unbind场景不起作用。 jQuery将每个事件处理函数存储在一个数组中,您可以通过$(“#foo”)。data(’events’)访问它。 unbind函数仅查找此数组中的给定函数。 所以,你只能unbind()用bind()添加的事件处理程序
如果他们使用jQuery,没有人应该将他们的标记与他们的交互代码混合。
像这样在页面中添加一些javascript:
$(function() { $('#aspnetForm').bind('submit',function() { trialMethod(); }); $('#btnTrial2').bind('click',function() { $('#aspnetForm').unbind('submit'); }); $('#btnTrial2').bind('click',function() { $('#aspnetForm').bind('submit', trialMethod2).unbind('submit'); }); });
现在,有了这个…现在一切都应该工作了(即使你现在将#aspnetForm
双重绑定, #aspnetForm
在按下第二个按钮时完全取消绑定它)。 问题是这种forms从来没有真正“束缚”开始。 您可以取消绑定标记中的onsubmit
参数。
您可以取消绑定以下方式:p
$( ‘#aspnetForm’)removeAttr( ‘的onsubmit’)。
我之前遇到过类似的问题。 我得出的结论是,你只能取消绑定你绑定的方法。 由于trialmethod()没有通过jquery绑定,因此在方法上调用unbind将无法正常工作。
如果你有任何机会弄明白,请告诉我们。
谢谢。
绑定,解除绑定和表单提交操作有一个错误:
如果你绑定然后unbind,并且你想提交你的表单,你不能使用$(form).submit()
,但是$(form INPUT[type=submit]).click()
!