JS onClick返回false和jQuery global .click

时间:2014-06-15 08:58:12

标签: javascript jquery javascript-events

我正在用某些代码对我的库进行调试:部分内容是它的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获取整个应用,但它没有运行。

1 个答案:

答案 0 :(得分:2)

  

...它有一个标签onclick事件附加到DOM,调用return false。

     

...我的代码会触发或返回false会像jQuery那样停止传播。

如果您的意思是标签上有onclick个属性:

<div onclick="return someFunction();">...</div>

(请注意,您需要} 属性中的return ),或者他们获得了分配给反射属性的处理程序:

someElementReference.onclick = someFunction;

...然后在该处理程序中执行return false将阻止单击的默认操作,但不会停止传播。更多(在我的博客上):The story on return false

请注意,相对于DOM2样式处理程序(如jQuery添加)触发旧DOM0样式处理程序(如上所述)的顺序未定义。有些浏览器首先触发DOM0处理程序,然后是DOM2处理程序;其他人则反过来做。在你的情况下,它并不重要,因为你没有做任何事情来阻止传播(特别是没有什么能阻止立即传播到同一元素上的其他处理程序),但是它似乎仍然值得一提。