关于mootools,我习惯于宣布一次并经常重复使用。 FX示例如下:
myEffect1 = new Fx.Slide($('myElement1'));
我应该如何继续使用jQuery?意思是,文档可以直接使用:
$('myElement1').click(function(e){
this.slideToggle();
});
但是,如果我想在我的代码上的其他地方调用此效果,我将不得不重新声明它吗?并不是这种方法比上面的方法更耗资源吗?如何在jQuery上正确完成?
答案 0 :(得分:3)
在调用函数之前,只需在变量中手动缓存结果集,然后根据需要重用该函数:
var $el_one = $("#path .to > .selection"), // Stores jQuery object
$el_two = $("#path .to > .second"); // Stores jQuery object
var effect = function(){
$el_one.fadeIn();
$el_two.fadeOut();
}
现在您可以随时调用效果而无需重新选择项目。他们改为使用缓存的jQuery选项来正确设置动画。
如果您需要更清晰,请告诉我。
答案 1 :(得分:1)
var slideToggleEffect = function(e){
this.slideToggle();
};
$('myElement1').click(slideToggleEffect);
$('myElement2').click(slideToggleEffect);
...
答案 2 :(得分:1)
在这种情况下我会使用插件。例如,这是我经常使用的插件 - 一个非常简单的幻灯片和淡入淡出切换效果。
$.fn.slideFadeToggle = function(easing, callback) {
return this.animate({opacity: 'toggle', height: 'toggle'}, "fast", easing, callback);
};
现在你可以在任何选择器上调用slideFadeToggle:
$("#somedom").slideFadeToggle();
答案 3 :(得分:1)
由于每个命令都作用于jQuery对象(通过在选择器上调用$()
返回的对象),因此您给出的示例是与MooTools中使用的对象最接近的比较,我可以看到。
资源更加饥饿吗?嗯,这是一个复杂的问题,因为实例化对象只是一个客户端代码。 Some framework methods for performing certain operations are better in some situations and worse in others