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

重构和干燥jQuery代码

  •  0
  • allesklar  · 技术社区  · 15 年前

    我要做的是向所有元素添加一个类,这些元素的类名与我悬停的id相同。例如,当我将某个id为元音的列表项悬停时,将对名为元音的类的所有span元素进行操作(添加一个类)。

    我可以毫无问题地做到这一点。但是我想对许多其他id名和相应的类名做同样的事情。例如:辅音、半元音、喉音、腭音等。

    我可以用不同的函数完成所有这些,但我想做的是调用一个函数,该函数将执行相同的任务,但足够聪明,可以找到id的名称,并由此生成类名。

    2 回复  |  直到 15 年前
        1
  •  2
  •   Steerpike    15 年前

    您可以使用一个插件:

    $.fn.highlight = function() {
        return this.each(function() {
            $(this).hover(function() {
                var id = $(this).attr('id');
                $('.'+id).addClass('myclass');
            });
        });
    }
    

    你可以这样称呼它:

    $(document).ready(function() {
        $('span').highlight();
    });
    
        2
  •  1
  •   cletus    15 年前

    您可以这样做:

    $("[id]").hover(function() {
      $("." + this.id).addClass("highlight");
    }, function() {
      $("." + this.id).removeClass("highlight");
    });
    

    var ids = ["vowels", "consonants"];
    for (var i = 0; i < ids.length; i++) {
      $("#" + ids[i]).hover(function() {
        $("." + this.id).addClass("highlight");
      }, function() {
        $("." + this.id).removeClass("highlight");
      });
    }
    

    或者类似的。