0

我打算将一些 jQuery 行为应用于两个具有自己的 css 类的元素。

我正在选择这样的两个班级......

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

但是该脚本仅适用于第二个选择器。我尝试了各种方法,但想不出一个合适的方法来做,我真的不想为另一个选择器复制代码。

将脚本应用于上述两个选择器的正确方法是什么?

提前致谢。

4

3 回答 3

6

使用each()通过选择器来调用every元素returned,目前fancybox()只使用zero选择器返回的索引处的元素调用。

$(".product-contain, .page-id-31").find("a:has(img)").each(function(){
      $(this).fancybox({
})
于 2012-12-22T20:16:50.477 回答
0

尝试

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

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

});
于 2012-12-22T20:19:28.783 回答
0

逗号分隔是应用多个选择器的正确方法。find 函数将尝试匹配其应用的上下文的所有后代。

您的选择器可以重写为:'.classA a.classC, .classB a.classC' 如果选择器符合您的意图,那么您的过滤是正确的。

Find 不会匹配上下文元素本身。

此外,如前所述,确保所应用的函数适用于整个结果集,而不仅仅是第一个结果。FancyBox 仅适用于集合中的第一个元素。在这种情况下,您可以应用 .each 函数来遍历集合中的所有元素并应用 fancyBox

于 2012-12-22T20:21:08.500 回答