2016-05-31 43 views
1

內切換推/接頭這就是我想要做的事:JQuery的:數組

我有相同的類,每次的div列表我點擊的div的一個,我想存儲相應的div ID在陣列中,是這樣的:

var array = []; 

[CODE] 

$("divID").on("click", function(){ 

    array.push($(this).attr("id")); 

[CODE] 

}); 

我想做到的是在陣列內的同一div推任何其他點擊/拼接匹配的ID。 ID推/拼接切換我猜...

推動數組內的div ID不是問題,但刪除它們似乎有點問題,因爲我只能清除整個數組。

我該如何循環訪問數組才能找到匹配的ID並在點擊時切換它?

謝謝!

+1

更簡單的方法是在點擊時在'}上添加'{ID:',然後在再次點擊時更新ID並設置爲'off'。這樣,您不必從陣列中刪除任何項目 - 只需更新其狀態即可。 –

+0

謝謝你的快速回答!這種方法有效! – derp

回答

1

正如我的OP評論所述,更簡單的方法是使用Hash而不是簡單的數組。這樣做時,您可以在點擊時添加{ID: 'on'},然後更新ID並在再次單擊時設置爲「關閉」。這樣,您不必從陣列中刪除任何項目 - 只需更新其狀態即可。

例如:

var hash = {}; 

$("divID").on("click", function(){ 
    var id = $(this).attr("id"); 

    // Turns it on 
    hash[id] = 'on';    // 'on' or true 

    // Alternatively, turn it off 
    hash[id] = 'off';    // 'off' or false 

    // You can also check its status 
    // if (hash[id] == 'on')... 
}); 
0

UPDATE:關於原來的做法:

我發現回答爲添加/刪除這裏的數組的值(參考)的原始的方法:

http://www.thoughtdelimited.org/thoughts/post.cfm/jquery-tip-finding-adding-and-removing-values-from-arrays#respond

這是代碼:

var index= jQuery.inArray(theValue, theArray); 

//If you're not using any other Javascript library that utilizes the $ sign, you can use the $ sign 
//instead of the jQuery namespace 

var index= $.inArray(theValue, theArray); 
if(index== -1) 
    { 
    //Value not found in the array. Add to the end of the array with push(); 
    theArray.push(theValue); 
    } 
else 
    { 

    //Remove from the array using splice(). Splice takes the index value of where you want to start 
    //removing items from the array as the first parameter, and then the number of item you want 
    //to remove as the second parameter. 

    theArray.splice(index,1); 

    } 

也爲我工作,我希望它會幫助別人。