2012-12-22 44 views
0

我正試圖將一些jQuery行爲應用於兩個具有自己css類的元素。我如何在jquery中定位多個css選擇器

我選擇了兩個班是這樣的...

$(".product-contain, .page-id-31").find("a:has(img)").fancybox({ 

但是腳本只適用於第二選擇。我嘗試了各種方法,但不能想出一個合適的方法來做到這一點,而且我並不想僅僅爲其他選擇器複製代碼。

將腳本應用到上述兩個選擇器的正確方法是什麼?

在此先感謝。

回答

6

使用each()通過選擇與every元素returned調用,目前fancybox()只調用在選擇器返回zero指數的元素。

$(".product-contain, .page-id-31").find("a:has(img)").each(function(){ 
     $(this).fancybox({ 
}) 
+0

這完美地工作,並感謝您的解釋! – Adam

+0

不客氣@亞當 – Adil

0

嘗試

$.each([".product-contain", ".page-id-31",.....] , function(i, value){ 

    var el = $(value); 
    el.find("a:has(img)").fancybox({options}); 

}); 
0

逗號分隔是應用多個選擇正確的方法。 find函數將嘗試匹配所應用到的上下文的所有後代。

您的選擇器可以改寫爲:'.classA a.classC,.classB a.classC'如果選擇器符合您的意圖,那麼您的過濾是正確的。

查找將不匹配上下文元素本身。

另外,如上所述,確保所應用的功能適用於整套結果,而不僅僅是第一個。 FancyBox只適用於集合中的第一個元素。在這種情況下,您可以應用.each函數來遍歷集合中的所有元素,並應用fancyBox

相關問題