首页 文章

JS onClick返回false和jQuery global .click

提问于
浏览
2

我_jas的JS和我的库在jQuery中很糟糕 . 它有标签tabber.js(来自2006年的代码),它有一个标签onclick事件附加到DOM,调用 return false .

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 回答

  • 2

    ...并且它有一个标签onclick事件附加到DOM,调用return false . ...我的代码会触发或返回false会像jQuery那样停止传播 .

    如果您的意思是选项卡上有 onclick 属性:

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

    (注意你需要 return in 属性),或者他们得到一个分配给反射属性的处理程序:

    someElementReference.onclick = someFunction;
    

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

    但是请注意,旧的DOM0样式处理程序(如上所述)相对于DOM2样式处理程序(如jQuery添加 is undefined )而触发的顺序 . 有些浏览器首先触发DOM0处理程序,然后是DOM2处理程序;其他人则反过来做 . 它没有做任何事情来阻止传播(特别是,没有什么可以阻止立即传播到同一元素上的其他处理程序),但它仍然值得一提 .

相关问题