2011-11-30 38 views
0

如何將值存儲到數組或散列中,以便單獨調用而不添加單個標識符?將數值存儲在數組或哈希中從jquery選擇器重用

var myarray = []; 
$(".express").each(function() { 
    myarray.push($(this).text()); 
}); 

function flashEXPRESS() { 
    $(".express").each(function() { 
    if ($(this).text() == 'NEW') { $(this).text() = myarray[???]; } 
    else { $(this).text() == 'NEW'} 
    }); 
} 
var flashEXPRESSid = 0; 
flashEXPRESSid = setInterval("flashEXPRESS()",1000); 
+0

無關注意:您應該將函數傳遞給'setInterval',而不是字符串。 'flashEXPRESSid = setInterval(flashEXPRESS,1000);' –

回答

2

each的回調使您將索引作爲第一個參數。這可能是你需要的。

$(".express").each(function (index) { 
    if ($(this).text() == 'NEW') { $(this).text() = myarray[index]; } 
    else { $(this).text() == 'NEW'} 
}); 
+0

如果元素數目發生變化會怎樣? – shaun5

+0

然後你必須以不同的方式儲存。我並不是說這只是一個諷刺的反應 - 這種方法假定並且只有在.express元素和你的myarray陣列同步時纔會起作用 –

+0

#1)感謝您的幫助。 #2)任何想法如何以不同的方式做到這一點(除了元素數量變化時重新定義數組)?我有另一個想要實現的想法,但需要能夠單獨調用這些值。 – shaun5

0

從評論,如果你想要讓你的div改變,並添加,而不是搞砸了你的數組索引,這樣的事情可能工作:

var myarray = {}; //object, not an array 
$(".express").each(function() { 
    var identifier = $(this).data("idforobject"); 
    myarray[identifier] = $(this).text(); 
}); 

function flashEXPRESS() { 
    $(".express").each(function() { 
    if ($(this).text() == 'NEW') { 
     $(this).text() = myarray[$(this).data("idforobject")]; 
    } 
    else { $(this).text() == 'NEW'} 
    }); 
} 

然後在您的div :

<div class="express" data-idforobject="something unique"> 

只需重命名myarray到別的東西,因爲它不是一個數組了

+0

感謝您的支持!這並不完全是我最初要求的,因爲我將不得不提供一個唯一的標識符。我想象的是,瀏覽器會爲每個元素分配一個唯一的ID,這個ID可以作爲一個鍵被引用並重用... – shaun5

+0

@ shaun5 - 如果瀏覽器爲你做了這件事,那就太好了,但我認爲你必須自己管理這些獨特的ID :) –