代码之家  ›  专栏  ›  技术社区  ›  Tom

jquery切换函数不返回false?

  •  1
  • Tom  · 技术社区  · 14 年前

    是否可以停止自动preventDefault()在简单的jQuery切换函数中应用?

    $(".mydiv").toggle(
        function () {
            $(this).addClass("blue");
        },
        function () {
            $(this).removeClass("blue");
        }
    );
    

    上面阻止了DIV中的元素对单击的正常响应。

    它不必是toggle()函数——任何允许打开或关闭类且不返回false的函数都是很好的。

    谢谢。

    1 回复  |  直到 14 年前
        1
  •  1
  •   D_N    14 年前

    文件承认这是一个限制:

    由于.toggle()在内部使用了一个click处理程序来完成它的工作,因此我们必须取消绑定click来删除附加了.toggle()的行为,以便在CrossFire中捕获其他的click处理程序。该实现还对事件调用.preventDefault(),因此,如果对元素调用了.toggle(),则不会跟踪链接,也不会单击按钮。

    资料来源: http://api.jquery.com/toggle/

    也就是说,没有内置的方式。令人欣慰的是,正如文档中所说,“手工实现相同行为相对简单”。在这种情况下:

    $(".mydiv").click(function(){
      $(this).toggleClass("blue");
    }}
    

    (了解更多信息 toggleClass() )