2015-12-12 44 views
1

我想創建一個ajax過濾器,在我的後端我需要每個過濾器的分離數組。所以我可以運行多個wherein。 我的HTML看起來像:jquery獲取基於父的多維數組

<div class="products-filter-page"> 
    <input data-id="18" type="checkbox" value="" class="checkbox-filter-option">test 
    <input data-id="19" type="checkbox" value="" class="checkbox-filter-option">test 
    <input data-id="20" type="checkbox" value="" class="checkbox-filter-option">test 
</div> 

<div class="products-filter-page"> 
    <input data-id="21" type="checkbox" value="" class="checkbox-filter-option">test 
    <input data-id="22" type="checkbox" value="" class="checkbox-filter-option">test 
    <input data-id="22" type="checkbox" value="" class="checkbox-filter-option">test 
</div> 

現在,當我選擇東西,我把所有的slected數據-ID在一個Ajax調用。不過,我希望他們根據他們的父母分開。例如,我有數據編號18,19和22

18,19具有相同的父母,所以我有1個數組[18,19]和一個數組[22]。

我目前的代碼獲取所有需要的東西,除了基於父母的分離。

var filterProducts = function() { 
    var selectedItems = []; 
    $(".checkbox-filter-option:checked").each(function() { 
    selectedItems.push($(this).data('id')); 
    }); 
    console.log(selectedItems); 
    if(selectedItems.length > 0){ 

    /*$.ajax({ 
      data : { ids:selectedItems 
      //some calls 
     }); 
    */ 
    } 

}; 

$(".checkbox-filter-option").on("click", filterProducts); 

Fiddle

回答

0

我做了一個例子,你在這裏:http://jsfiddle.net/4wot3o8a/2/

var selectedItems = [[],[]]; 
$(".checkbox-filter-option:checked").each(function() { 
    if ($(this).parent()[0] == $(".products-filter-page")[0]) { 
    selectedItems[0].push($(this).data('id')); 
    } else { 
    selectedItems[1].push($(this).data('id')); 
    } 
}); 

希望這可以幫助你達到你正在嘗試的。

0

將您的html部分更改爲<input data-id="18" type="checkbox" value="" class="checkbox-filter-option" name=filter-X> 對於第1個groop filter-1和第n組filter-2。

Var filterVal = {}; Each loop{ Var Name =$(this).attr('nane')]; If(!filterVal[Name])filterVal[Name]=[]; filterVal[Name].push($(this).data('id')); }