投稿

jQuery:later

jquery

例の CrossSlide がウザいから1回で止めてくれと、お客様じゃなくて社内から声が。あんたが入れろって言ったんじゃんか!と喉元まで出かかった言葉を呑み込んで、ハイハイと素直に答える優しい技術者。
でも、ソースを読んでも、止める方法が書いてない。
[code]
$.fn.crossSlideFreeze = function()
{
this.find(‘img’).stop();
}
[/code]
crossSlideFreezeという関数を呼べば止まるみたいだけど、どうやって呼べばいいんだ?
スライドに飽きたら[Stop]ボタンをユーザに押してもらうか。そんなバカな。
ということで、ある程度時間が経ったら止めることにしました。
[code]
(function($) {
$.fn.later = function(arg, fn) {
var self = this;
var timer = setTimeout(function() {
clearTimeout(timer);
self.each(fn);
}, arg);
return self;
};
})(jQuery);
[/code]
こういうのを外部ファイル(例えば、jquery.later.js)に置いておいて、こんな風にします。
[code]
<script type="text/javascript" src="/js/jquery.later.js”>

jQuery(function($) {
$(‘#gallery1’).later(80000, function() {
$(this).find(‘img’).stop();
});
});

[/code]
80秒経ったら、gallery1のすべての imgを止めてしまえ、です。フェードの途中でも有無を言わさず止まってしまって面白いです。