2011-02-03 7 views
1

私は製品のページを持っており、それぞれ1つはマウスオーバーでいくつかの画像を繰り返してマウスオーバーで停止したいと思っています。次のコードは私の現在の状態です...jqueryの複数のインスタンスにアクセスする

最初に私はそれが次の画像に回転する必要があるかどうかを確認するためにrepeatCycleというグローバル変数をチェックしていました。これは、この関数のすべてのインスタンスが同じ変数を設定している&をチェックしていたために問題が発生しました。一度に複数のインスタンスを実行することがよくあります。だから私は代わりに各インスタンスのために何かを設定したいが、それを行うことができませんでした。

私は関数の引数として渡してみましたが、repeatCycle:falseに渡したときのmouseoutイベントでは、別のインスタンスを初期化するだけでした。

誰でもこれを達成するための提案はありますか?

$.fn.image_cycler = function(options){ 
    // default configuration properties 
    var defaults = { 
    fade_delay:  150, 
    image_duration: 1500, 
    }; 
    var options = $.extend(defaults, options); 

    this.each(function(){ 
    var product  = $(this); 
    var image  = $('div.image>a.product_link>img', product); 
    var description = $('div.image>div.description', product); 
    var all_images = $('div.all_images', product); 
    var next_image = ($(all_images).find('img[src="' + $(image).attr('src') + '"]').next('img').attr('src')) ? $(all_images).find('img[src="' + $(image).attr('src') + '"]').next('img') : $(all_images).children('img').first();; 

    // mouseover 
    image.fadeOut(options.fade_delay, function(){ 
     image.attr('src', next_image.attr('src')); 
     image.fadeIn(options.fade_delay); 
    }); 
    if (this.repeatCycle){ 
     var loop = function() { 
     return this.image_cycler(options); 
     } 
     setTimeout(loop,options.image_duration); 
    } 
    }); 
}; 

$(document).ready(function() { 
    $('div.product').hover(function(){ 
    $(this).image_cycler(); 
    }, function(){ 
    $(this).image_cycler.repeatCycle = false; 
    }); 
}); 
+0

あなたは、各要素のデータを格納する.DATA機能を試してみましたか? – Marco

+0

いいえ、私はそれに精通していません。私はそれについてのドキュメントを見ていますが、インスタンスごとに異なるデータを格納する方法やアクセスする方法はわかりません。私はこれを試してみましょう...その別のルートを取るだけでいいです! – brewster

+0

。データは私の心にも来る最初の、最も簡単なものです。 – morgancodes

答えて

1

jQueryの.data()を試してみてください。例えばで

if (this.repeatCycle){ 
.... 
$(this).image_cycler.repeatCycle = false; 

:行を置き換えるようなもの

if (product.data('repeatCycle')){ 
.... 
$(this).data('repeatCycle', false); 
+0

これはまさに私が必要なものです!ありがとう – brewster

関連する問題