重构和干掉jQuery代码

时间:2009-11-27 15:49:16

标签: javascript jquery

我正在做的是为所有与我正在悬停的id具有相同类名的元素添加一个类。例如,当我悬停一些带有元音id的列表项时,所有带有名称元音类的span元素都会被执行(添加一个类)。

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

我可以使用不同的函数完成所有这些操作,但我想做的是调用一个函数来执行相同的任务,但是它足够聪明,可以找到id的名称并从中生成类名。

如何将id名称提取到变量中并将其分配给类名。

2 个答案:

答案 0 :(得分:2)

您可以使用插件:

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

您可以这样称呼:

$(document).ready(function() {
    $('span').highlight();
});

答案 1 :(得分:1)

你可以这样做:

$("[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");
  });
}

或类似的东西。