如何在jquery上重用效果实例

时间:2009-11-22 17:56:44

标签: javascript jquery mootools

关于mootools,我习惯于宣布一次并经常重复使用。 FX示例如下:

myEffect1 = new Fx.Slide($('myElement1'));

我应该如何继续使用jQuery?意思是,文档可以直接使用:

$('myElement1').click(function(e){
    this.slideToggle();
});

但是,如果我想在我的代码上的其他地方调用此效果,我将不得不重新声明它吗?并不是这种方法比上面的方法更耗资源吗?如何在jQuery上正确完成?

4 个答案:

答案 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