我正在用某些代码对我的库进行调试:部分内容是它的vanilla JS和我的库在jQuery中被遗忘了。它有标签tabber.js(来自2006年的代码),它有一个标签onclick事件附加到调用return false
的DOM。
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;
};
Here is tab code其中有点击处理程序(第311和265行)。
在我的图书馆中我有:
$(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中的相同。将event.preventDefault()替换为false会使我的代码运行吗?
从症状看起来我的功能没有被执行。我尝试使用wget
获取整个应用,但它没有运行。
答案 0 :(得分:2)
...它有一个标签onclick事件附加到DOM,调用return false。
...我的代码会触发或返回false会像jQuery那样停止传播。
如果您的意思是标签上有onclick
个属性:
<div onclick="return someFunction();">...</div>
(请注意,您需要1>} 属性中的return
),或者他们获得了分配给反射属性的处理程序:
someElementReference.onclick = someFunction;
...然后在该处理程序中执行return false
将阻止单击的默认操作,但不会停止传播。更多(在我的博客上):The story on return false
请注意,相对于DOM2样式处理程序(如jQuery添加)触发旧DOM0样式处理程序(如上所述)的顺序未定义。有些浏览器首先触发DOM0处理程序,然后是DOM2处理程序;其他人则反过来做。在你的情况下,它并不重要,因为你没有做任何事情来阻止传播(特别是没有什么能阻止立即传播到同一元素上的其他处理程序),但是它似乎仍然值得一提。