2017-07-18 86 views
2

我有2個選擇列表,從第一個選擇一個選項決定了第二個選項。這在Chrome中非常適用,但是IE在隱藏適當的選項來更改第一個選擇時遇到問題。正在應用hidden類,但這些選項仍可見。任何想法如何修改這個在IE中工作?在jQuery中隱藏IE中的選擇選項

Fiddle

$(document).on('change', '#category', function(e) { 
 
    if ($(this).prop('selectedIndex') == 0) { 
 
    $('#condition option').addClass('hidden'); 
 
    $('#condition .cat-1').removeClass('hidden'); 
 
    } else if ($(this).prop('selectedIndex') == 1) { 
 
    $('#condition option').addClass('hidden'); 
 
    $('#condition .cat-2').removeClass('hidden'); 
 
    } 
 
});
.hidden { 
 
    display: none !important; 
 
} 
 

 
#category { 
 
    height: 40px; 
 
} 
 

 
#condition { 
 
    height: 110px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<select id="category" size="2"> 
 
    <option class="cat-1">Group 1</option> 
 
    <option class="cat-2">Group 2</option> 
 
</select> 
 

 
<select id="condition" size="2"> 
 
    <option class="cat-1">Item from group 1</option> 
 
    <option class="cat-1">Item from group 1</option> 
 
    <option class="cat-1">Item from group 1</option> 
 
    <option class="cat-2">Item from group 2</option> 
 
    <option class="cat-2">Item from group 2</option> 
 
    <option class="cat-2">Item from group 2</option> 
 
</select>

+0

[

+0

也許在Firefox中不起作用。隱藏選項不是跨瀏覽器,你必須刪除或禁用它們 – adeneo

回答

1

可以selectoption S保存到變量,然後取出並重新進行添加其中任何一個你想要的。

// saving options 
 
var options = $("#condition option"); 
 

 
$(document).on('change', '#category', function(e) { 
 
    if ($(this).prop('selectedIndex') == 0) { 
 
    // deleteing all options 
 
    $("#condition").empty(); 
 
    // adding options only of class .cat-1 
 
    options.filter(".cat-1").each(function() { 
 
     $("#condition").append($(this)); 
 
    }); 
 
    } else if ($(this).prop('selectedIndex') == 1) { 
 
    // deleteing all options 
 
    $("#condition").empty(); 
 
    // adding options only of class .cat-2 
 
    options.filter(".cat-2").each(function() { 
 
     $("#condition").append($(this)); 
 
    }); 
 
    } 
 
});
#category { 
 
    height: 40px; 
 
} 
 

 
#condition { 
 
    height: 110px; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 

 
<select id="category" size="2"> 
 
    <option class="cat-1">Group 1</option> 
 
    <option class="cat-2">Group 2</option> 
 
</select> 
 

 
<select id="condition" size="2"> 
 
    <option class="cat-1">Item from group 1</option> 
 
    <option class="cat-1">Item from group 1</option> 
 
    <option class="cat-1">Item from group 1</option> 
 
    <option class="cat-2">Item from group 2</option> 
 
    <option class="cat-2">Item from group 2</option> 
 
    <option class="cat-2">Item from group 2</option> 
 
</select>

+0

謝謝!無法讓我的更改事件知道「選項」是什麼,當它碰到過濾器行時出現未定義的錯誤 – noclist

+1

@noclist您應該在頁面加載(而不是更改事件)上爲您保存「選項」,然後對它們進行過濾。這是否有意義,或者你仍然有這個問題? –

+0

明白了,謝謝。我的變量的作用域錯誤。 – noclist