您的逻辑很接近,但您使用此行定位所有图像:
$('.flexslider .slides li img').addClass('zooming');
它还必须在每次slide > li
更改类时运行。
不幸的是,jQuery 没有类似的东西.classChange()
,但这里有一个函数——由 kozachenko 在 github 上创建——它可以满足我们的需求。
因此,您可以添加 kozachenko 的函数,然后使用它来查看类是否li
已更改,然后添加/删除您的zooming
类。
要仅查找您要查找的那个,您可以使用活动类作为选择器,然后使用 jQuery.find() 查找该特定元素内的图像。
$(document).ready(function(){
//kozachenko's function https://gist.github.com/kozachenko/30e55fb5f9ae170eedfe258430fd09ec
(function(){//adds a trigger step to the addClass/removeClass jQuery functions
var originalAddClassMethod = jQuery.fn.addClass;
var originalRemoveClassMethod = jQuery.fn.removeClass;
jQuery.fn.addClass = function(){
var result = originalAddClassMethod.apply( this, arguments );
jQuery(this).trigger('classChanged');
return result;
}
jQuery.fn.removeClass = function(){
var result = originalRemoveClassMethod.apply( this, arguments );
jQuery(this).trigger('classChanged');
return result;
}
})();
$('.flexslider .slides > li').on('classChanged', function(){//the new event triggered by addClass()/removeClass()
$(this).find('img').removeClass('zooming');//first remove the class from any other image
$('.flex-active-slide').find('img').addClass('zooming'); //add the class to active image
});
});