2013-08-23 24 views
0

我有幾個選擇元素class =「select」。其中有幾個有重複的選項值。但我想找到出現在每個選擇中的重複值,而不僅僅是例如。 2 out of 5.計數值的個數

這是我編輯的代碼。

var selector = $('.select') 
    $('option', selector).each(function() {   
     if ($('option[value="' + $(this).val() + '"]', selector).length == 6) { 
      $(this).clone().prop('selected', false).appendTo("#commonBranch_select");   
     } 
    }); 

我試圖做一個選擇包含一個新的選項每重複所有其他.select選項。

這些6,但在所有這些「測試」存在,所以我想在#commonBranch_select

<select class="select"> 
<option value="test"> 
test 
</option> 
</select> 

我刪除從新列表中的重複與

var map = {}; 
    $("#commonBranch_select option").each(function(){ 
     var value = $(this).text(); 
     if (map[value] == null){ 
      map[value] = true; 
     } else { 
      $(this).remove(); 
     } 
    }); 

它的工作原理,但但可能可以做得更好:)

+0

一個選擇框可以包含重複值?你的代碼返回什麼? –

+0

我更新了我的代碼 – Newcoma

回答

0

您可以使用相同的值查找option元素:

var $selector = $('.select') 
$('option', $selector).each(function() {  
    if ($('option[value="' + $(this).val() + '"]', $selector).length > 1) { 
     // do something 
    } 
}); 

另外,使用filter

var $duplicates = $('option', $selector).filter(function() { 
    return $('option[value="' + $(this).val() + '"]', $selector).length > 1; 
}); 
// now do something with $duplicates... 
+0

非常感謝!我的問題是,我只希望它爲每個重複實例返回一次,而不是每次都存在於所有選擇選項中。希望你能理解。 $ duplicates解決方案讓我的瀏覽器崩潰btw ... – Newcoma