我打算将一些 jQuery 行为应用于两个具有自己的 css 类的元素。
我正在选择这样的两个班级......
$(".product-contain, .page-id-31").find("a:has(img)").fancybox({
但是该脚本仅适用于第二个选择器。我尝试了各种方法,但想不出一个合适的方法来做,我真的不想为另一个选择器复制代码。
将脚本应用于上述两个选择器的正确方法是什么?
提前致谢。
使用each()通过选择器来调用every
元素returned
,目前fancybox()
只使用zero
选择器返回的索引处的元素调用。
$(".product-contain, .page-id-31").find("a:has(img)").each(function(){
$(this).fancybox({
})
尝试
$.each( [".product-contain", ".page-id-31",.....] , function(i, value){
var el = $(value);
el.find("a:has(img)").fancybox({options});
});
逗号分隔是应用多个选择器的正确方法。find 函数将尝试匹配其应用的上下文的所有后代。
您的选择器可以重写为:'.classA a.classC, .classB a.classC' 如果选择器符合您的意图,那么您的过滤是正确的。
Find 不会匹配上下文元素本身。
此外,如前所述,确保所应用的函数适用于整个结果集,而不仅仅是第一个结果。FancyBox 仅适用于集合中的第一个元素。在这种情况下,您可以应用 .each 函数来遍历集合中的所有元素并应用 fancyBox