代码之家  ›  专栏  ›  技术社区  ›  Max Williams

如何重写jquery的s how()和hide()函数

  •  4
  • Max Williams  · 技术社区  · 15 年前

    问题的简短版本:参见标题

    问题的长版本: 我在代码中广泛使用了jquery的show()和hide()函数,但遇到了一个问题:它们分别将元素的display属性更改为“block”或“none”,这样,如果有显示为“inline”,然后隐藏并显示它,则会将其显示更改为block,从而使layou在一些情况下。

    在我的代码中,每当我希望最初隐藏某个东西时,我都会给它一个“隐藏”类。这个类只是显示:无。我希望更改显示和隐藏来删除或添加这个类,而不是直接更改显示属性,这样如果您添加了隐藏类,然后再次删除它(即隐藏和显示某些内容),那么它将回到最初的状态(因为添加类会覆盖属性,而不是直接更改它们)。类似这样(这有点假代码,因为我不知道如何正确设置函数-假设“this”是调用了s how/hide的对象)

    function show(){
      this.removeClass("hidden");
    } 
    
    function hide(){
      this.addClass("hidden");
    } 
    

    我将如何以及在何处覆盖jquery方法?(我不是javascript专家)

    谢谢-马克斯

    1 回复  |  直到 15 年前
        1
  •  10
  •   user113716    15 年前

    当您可以创建自己的方法时,我不会重写jquery的方法。重写很可能会导致插件中出现意外行为。

    jquery已经有一个名为 toggleClass() 这似乎符合你的要求。

    $someElement.toggleClass('hidden');
    

    Docs: http://api.jquery.com/toggleClass/


    编辑:

    但要回答您的特定问题,要重写jquery方法,您需要执行如下操作:

    jQuery.fn.show = function() {
        // Your custom code
    }
    

    或者创建自定义方法:

    jQuery.fn.customMethod = function() {
        // Your custom code
    }
    

    在执行此操作之前,最好查阅本文档:

    http://docs.jquery.com/Plugins/Authoring