2012-10-30 53 views
1

如何減少這種選擇器?選擇具有共同ID的各種不同類別

$("#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"); 
}); 
+0

爲什麼你需要減少這個選擇?它可以像'$('#id')。find('。class1,.class2,.class3 ...')'重寫,但這是你唯一想找的東西嗎? – raina77ow

+0

你可以發佈你的標記的相關部分? –

+0

取決於您的文檔結構。顯示一些標記。 –

回答

1

您可以使用使用方面的選擇超載。

上下文可以是一個jQuery包裝集或其他選擇器字符串。

$('.class1, .class2, .class3, .class4, .class5', '#id') 
2

使用屬性開始-與選擇

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

或者如果可能有一些其他'class...'類不應包含,則可以手動過濾。

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

這將搜索'class'加上一個或多個數字以及一個字邊界。

+0

不錯的一個選擇器 – RomanTheGreat

+0

但是,這也將捕獲'.class666' –

+0

是的,但也會拿起.class6等。如果這是可取的,那很好。 –

1

可以使用find()方法你選擇一次分裂成兩個不同的,從而消除重複#id

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

您可以在這種情況下使用.filter()方法..

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

// OR Attribute starts with selector ^

$("#id [class^="class"]").on("mouseover", function(e){ 
    // code 
}); 
相關問題