我有兩個容器,每個容器觸發一些函數,它必須傳遞對象引用。 該函數具有嵌套的隊列和setTimeout,我需要通過它們兩個來傳遞對象引用,以在正確的對象上執行它。如何將參數傳遞給隊列_然後_到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,但它們都指向同一個對象。
任何意見,讚賞。由於
_「的任何建議都讚賞」 _ **不要傳遞字符串到'setTimeout'是我的建議... ** – gdoron
但我沒有看到任何其他方式......我需要通過它...... :) – Anonymous
@ user1125062:'setTimeout'接受函數引用,所以'setTimeout(whatthe,400)'等價於'setTimeout(「whatthe()」,400)',但沒有隱式調用'eval'。一般來說,你永遠不需要在JavaScript中將實際的*代碼*放在引號中。 –