1

我怎样才能减少这种选择器?

$("#id .class1, #id .class2, #id .class3, #id .class4, #id .class5").on("mouseover", function(e){
    // code
});

编辑:

例子:

$("#my_id .product, #my_id .date, #my_id .due").on("mouseover", function(e){
    $(this).addClass("edit");
});
4

4 回答 4

2

使用attribute-starts-with选择器

$("#id *[class^='class']");

或者,如果可能有一些其他'class...'类不应该包括在内,您可以手动过滤。

$("#id *[class^='class']").filter(function(i, el) {
    return /class\d+\b/.test(el.className);
});

这将搜索'class'plus 一个或多个数字,以及一个单词边界。

于 2012-10-30T15:05:30.773 回答
1

您可以使用该find()方法将选择器分成两个不同的一次,从而删除重复的#id

$('#id').find( '.class1, class2, class3, class4, class5')
        .on("mouseover", function(e){
            // code
         });
于 2012-10-30T15:06:49.527 回答
1

您可以使用使用上下文的选择器重载。

上下文可以是一个 jQuery 包装集或另一个选择器字符串。

$('.class1, .class2, .class3, .class4, .class5', '#id')
于 2012-10-30T15:09:00.447 回答
1

在这种情况下,您可以使用该.filter()方法..

$("#id").filter(".class1, .class2, .class3, .class4, .class5").on("mouseover", function(e){
    // code
});

//OR 属性以选择器开头 ^

$("#id [class^="class"]").on("mouseover", function(e){
    // code
});
于 2012-10-30T15:22:22.660 回答