JS onClick return false and jQuery global .click
我用别人的代码来调试我的库:部分是普通的JS,我的库是jquery中的wirtten。它有tabs tabber.js(2006年的代码),它有tabs onclick事件连接到调用
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | tabberObj.prototype.init = function(e) { DOM_a = document.createElement("a") ; DOM_a.appendChild( document.createTextNode( t.headingText ) ) ; DOM_a.href="javascript:void(null);" ; DOM_a.title = t.headingText ; DOM_a.onclick = this.navClick ; ... }; tabberObj.prototype.navClick = function(event) { ... return false; }; |
这里是选项卡代码,其中有单击处理程序(第311行和第265行)。
在我的图书馆里我有:
1 2 3 4 5 6 7 | $(document).bind('click.terminal', function(e) { var sender = $(e.target); if (!sender.closest('.terminal').hasClass('terminal') && settings.onBlur(self) !== false) { self.disable(); } }); |
我的密码会被激活吗?在JS中返回false与在jquery中执行相同的操作。将返回false替换为event.preventDefault()将使代码运行吗?
从症状来看,我的功能似乎没有执行。我试着用
...and it have tabs onclick event attached to DOM that call return false.
... will my code fire or return false will stopPropagate like jQuery does.
如果您的意思是选项卡上有
1 | ... |
(注意,您需要在属性中使用
1 | someElementReference.onclick = someFunction; |
…然后在该处理程序中执行EDOCX1[2]将阻止单击的默认操作,但不会停止传播。更多(在我的博客上):关于
但是,请注意,相对于像jquery添加的dom2样式的处理程序,旧的dom0样式的处理程序(如上面所述)被激发的顺序是未定义的。有些浏览器先启动dom0处理程序,然后启动dom2处理程序;另一些则相反。在您的情况下,这并不真正重要,因为您没有做任何事情来停止传播(尤其是,没有任何事情可以停止立即传播到同一元素上的其他处理程序),但它似乎仍然值得调用。