0

2 つのコンテナーがあり、それぞれがオブジェクト参照を渡す必要がある関数をトリガーします。この関数にはネストされた queue と setTimeout があり、適切なオブジェクトで実行するには、それらの両方にオブ​​ジェクト参照を渡す必要があります。

これは私が試したものです:

 var pimg=parent.find('.prod_img'); // This is the object I actually need to pass;

    pimg.children('img:last').queue((function(aaa){
        return function() {
        whatthe= (function (itema) {
                return function() {
                 itema.children('img').each(function(){
                    alert(itema.attr('id'));
                //alert used for debug.
$(this).stop(false,false).animate({opacity:0},400,function(){
                    });
                });
                }
            })(aaa)
        aaa.data('timeout',window.setTimeout("whatthe()",   400));      
        }
    })(pimg)
    );

ここで、両方のオブジェクトでこの関数をすばやくトリガーすると、同じ ID に警告が表示されます。これは、オブジェクト参照が渡されないことを示唆しています。

pimg は実際のオブジェクトであり、キュー参照では aaa と呼ばれ、setTimeout 参照では itema と呼ばれますが、これらはすべて同じオブジェクトを指していると考えられます。

アドバイスをいただければ幸いです。ありがとう

4

1 に答える 1

2

あなたのコードは頭が痛いので、実際にこれをテストするための HTML はありませんが、問題を正しく理解していれば、これはうまくいくはずです:

var pimg = parent.find('.prod_img'); // This is the object I actually need to pass;

pimg.children('img:last').queue((function(aaa){
    return function() {
        var whatthe = (function (itema) {
            return function() {
                itema.children('img').each(function(){
                    alert(itema.attr('id'));
                    //alert used for debug.
                    $(this).stop(false,false).animate({opacity:0},400, function(){});
                });
            }
        })(aaa)
        aaa.data('timeout',window.setTimeout(whatthe, 400));
    }
})(pimg));
于 2012-05-12T22:18:52.130 に答える