オプション付きの<SELECT multiple="multiple">
ボックスがあります。
選択したオプションをJS変数に保存します- selectedFeatures
。
selectedFeatures
オプションの配列変数を-に渡したいのですjQuery.inArray()
が、この関数は1つの値のみを取得してチェックするように設計されています。
次のように要素のインデックスを実際に指定すると、マップ上のマーカーを表示/非表示(またはフィルター)できます:selectedFeatures[0]
insideinArray()
..しかし、選択ボックスから複数のオプションを選択する可能性があるため、このフィルタリング方法は機能しません。
JS / jQueryを使用して、アイテムの配列が別の配列内にあるかどうかを確認するにはどうすればよいですか?
// store selected options as an array of string elements inside the variable
var selectedFeatures = $("#features").val();
// for every element inside 'markers.houses' array...
$(markers.houses).each(function(index, elem){
// check if any of the values inside the 'selectedFeatures' array are found
// also inside a sub-array 'features' inside every element of 'markers.houses'
// array. if 'true' show that particular marker, otherwise hide the marker
if(jQuery.inArray(selectedFeatures, elem.features) !== -1 || jQuery.inArray(selectedFeatures, elem.features) > -1){
markers.houseMarkers[index].setVisible(true);
}else{
markers.houseMarkers[index].setVisible(false);
}
});
図1.1-選択したオプションを配列変数に格納し、
jQuery.inArray()