2011-04-04 58 views
0

我需要一些JavaScript/jQuery這個。我有兩個數組,一個硬編碼的靜態數組和另一個用戶驅動的動態數組。例如,每個數組中的值代表一個div。每個div都在靜態數組中表示。我希望能夠僅顯示動態數組中存在的div。因此,如果動態數組更改,它會顯示動態數組中存在的div,並隱藏div不存在。我也希望能夠運行連接到每個div的功能,即box1具有需要調用的功能(如果顯示的話)。檢查靜態數組的動態數組

var static_list = new Array("box1","box2","box3"); 
var dynamic_list = new Array("box1","box3"); 
+0

爲了弄清楚,數組中的值是這些div元素的ID屬性嗎? – 2011-04-04 21:18:41

+0

是的。他們是ID – madphp 2011-04-04 21:23:18

回答

0

你可以使用一個簡單的比較功能:

// Return true if value is in array 
function isIn(value, array) { 
    var i = array.length; 
    while (i--) { 
    if (array[i] == value { 
     return true; 
    } 
    } 
    return false; 
} 

,那麼你可以看到,如果一個值使用是一個數組:

if (isIn(value, array)) { 
    // do something with/to value 
} 
1

我假設dynamic_list是子集static_list

$.each(static_list, function(index, value) { 
    $('#' + value).hide(); 
}); 

$.each(dynamic_list, function(index, value) { 
    $('#' + value).show(); 
}); 

$.each()遍歷集合呼籲每個元素的回調函數。第一個$.each()隱藏了在static_list中找到的ID中的所有元素。第二個$.each()顯示在dynamic_list中找到ID的所有元素。按順序運行都隱藏了static_list中的所有div元素,dynamic_list中的元素除外。

0

您可以通過使用$.each()$.inArray(),並.toggle()

$.each(static_list, function(index, value){ 
    var showHide = $.inArray(value, dynamic_list) >= 0; 
    $("#" + this).toggle(showHide); 
}); 

代碼示例上jsfiddle實現你的結果。