我有一个小插件,用于根据几个可变因素设置元素的高度。在页面加载时,我想要一个延迟,以防止高度设置几秒钟。我知道延迟只适用于效果,有没有办法可以将我的插件注册为效果,或者我是否需要以另一种方式执行此操作?
欲望发布代码:
$(".app_advert").delay(10000).set_height(2000);
插件代码:
//SetHeight plugin
(function($){
$.fn.extend({
set_height: function(time, callback){
scroll = $(window).scrollTop();
win_height = $(window).height();
document_height = $(document).height();
footer_height = $('#footer').height();
footer_offset = (document_height-(win_height+scroll));
footer_remainder = footer_height-footer_offset;
return this.each(function(){
var x = $(this);
if(footer_height-footer_offset<=0){
height = 0;
} else {
height = footer_height-footer_offset;
}
$(x).stop(true, false).animate({bottom: height}, time, function(){
if (callback && typeof callback == 'function') { // make sure the callback is a function
callback.call(this); // brings the scope to the callback
}
});
});
}
});
})(jQuery);
答案 0 :(得分:2)
您需要手动调用jQuerys .queue()
。可能看起来像;
$(".app_advert").delay(10000).queue(function() {
$(this).set_height(2000);
$(this).dequeue();
});
您甚至可以在该构造后面链接更多排队的方法。请注意,默认情况下,对于要应用于当前包装集的任何其他方法,所有fx methods
都排队,调用另一个.queue()
。
答案 1 :(得分:0)
如何在插件中使用setTimeout。或者甚至更好地使用伪方法使用setTimeout编写自己的延迟插件,以便您可以链接事件。