2011-11-24 34 views
22

Tôi có menu thả xuống chọn nhiều như sau, trong đó tôi đã chọn các tùy chọn "Kiểm tra 2" và "Thử nghiệm 3".Bỏ chọn tất cả các phần tử từ trình đơn thả xuống nhiều lựa chọn trong jQuery

<select id="edit-rec" class="form-select" multiple="multiple" name="rec[]"> 
<option value="6012">Test 1</option> 
<option value="8436">Test 2</option> 
<option value="4689">Test 3</option> 
<option value="6784">Test 4</option> 
</select> 

Tôi có một nút gọi là "Deselect All". Khi nút này được nhấp, tất cả các mục đã chọn sẽ được bỏ chọn. Trong trường hợp này, các mục tôi đã chọn trước đây, "Test 2" và "Test 3", bây giờ sẽ bị bỏ chọn.

Làm cách nào tôi có thể thực hiện việc này bằng jQuery?

Trả lời

39
$("#edit-rec option:selected").removeAttr("selected"); 
+9

Tốt hơn để sử dụng '$ (" # edit-rec option: selected "). Prop (" selected ", false);' – Madeyedexter

4
$("#edit-rec option:selected").removeAttr("selected"); 
9

Thử -

$("#edit-rec > option").attr("selected",false); 

Demo - http://jsfiddle.net/LhSBu/

+0

Mã của bạn trông rất đẹp. Nhưng bạn có thể giải thích cú pháp $ ("# edit-rec> option") – Fero

+0

'$ (" # edit-rec> option ")' nên chọn bất kỳ phần tử 'option' nào là các phần tử con trực tiếp' # edit-rec' thành phần. Xem - http://api.jquery.com/child-selector/ – ipr101

+1

Tôi khuyên bạn nên xóa phần '>'. Nó không có ý nghĩa trong trường hợp này, và sẽ gây ra hành vi bất ngờ bằng cách sử dụng '' làm cha mẹ của '

2

có thể làm điều gì đó như thế này JS Fiddle lập các nhấp chuột vào nút radio http://jsfiddle.net/x5ck3/

$('#rdClear').click(

function() { 
    $("#edit-rec option:selected").removeAttr("selected"); 
}); 
3
$("#butt").click(function() { 
    $("#edit-rec > option").removeProp("selected"); 
}); 

đó là đúng với phiên bản jQuery mới

+0

ý tưởng rất tồi, từ https://api.jquery.com/removeProp/ Điều này sẽ xóa thuộc tính hoàn toàn và, sau khi xóa, không thể được thêm lại thành phần tử. Sử dụng .prop() để đặt các thuộc tính này thành false thay thế. – MikeT

5

On click nút radio mà bạn có thể sử dụng

$("#edit-rec option").each(function(){ 

    this.selected=false; 

}); 
5

Nó sẽ loại bỏ tất cả các tùy chọn kiểm tra từ DropDownList multiselect:

$ (' #ddlTradeShow '). multiselect ("clearSelection");

+0

Vui lòng thêm một chút giải thích cho câu trả lời của bạn, để làm cho nó dễ đọc hơn – Aleksej

+1

nó hoạt động trong Bootstrap Multi-select. – chhameed

0

Hiện nay là một khả năng của API trực tiếp cung cấp:

$('#edit-rec').multiSelect('deselect_all'); 

Hoạt động tốt, ở đây bạn có thể tìm thấy nhiều lựa chọn hơn về nó: http://loudev.com/

0

Cách đơn giản nhất mà tôi tìm thấy để bỏ chọn tất cả các tùy chọn trong menu thả xuống nhiều lựa chọn đang sử dụng .val([]).

$("#select").val([]); 
Các vấn đề liên quan