2017-01-13 17 views
16

Cập nhật gần đây cho jQuery v1.12 và nhận thấy rằng nó đặt các phần tử <select> thành tùy chọn không tồn tại nếu không tồn tại, thay vì thả xuống một cách duyên dáng để hủy cài đặt giá trị như trước đây.jQuery v1.10 + val() tạo ra tùy chọn trống nếu không tồn tại

Đây là hành vi của tôi đang sử dụng để (v1.10 trước):

$("button").click(function() { 
 
    $("select").val(''); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script> 
 
<select> 
 
    <option value="1">something 1</option> 
 
    <option value="2" selected="selected">something 2</option> 
 
</select> 
 
<button>reset</button>

Và đây là cách v1.10 + xử:

$("button").click(function() { 
 
    $("select").val(''); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.0/jquery.min.js"></script> 
 
<select> 
 
    <option value="1">something 1</option> 
 
    <option value="2" selected="selected">something 2</option> 
 
</select> 
 
<button>reset</button>

Đây có phải là lỗi hoặc đây có phải là hành vi dự định không?

Tôi đọc qua số changelog và không thấy bất kỳ đề cập cụ thể nào về thay đổi này nhưng việc tìm kiếm nó thay vì gây rối.

(Xin lưu ý: Tôi không tìm cách giải quyết và như đã nêu trong các ý kiến, tôi đã thay đổi ứng dụng của tôi sử dụng $('select').prop("selectedIndex", 0).change();)

+0

Ra khỏi tò mò - tại sao bạn sẽ thiết lập thả xuống để lựa chọn không tồn tại, nếu bạn muốn thiết lập lại nó? – sinisake

+0

Các phần của ứng dụng của tôi có mã như '$ ('select'). Val ('');' mà trước đó sẽ thiết lập lại các phần tử được chọn trong một biểu mẫu. Bây giờ nó không thành công và tôi đã cập nhật nó thành '$ ('select'). Prop (" selectedIndex ", 0) .change();' hoạt động tốt nhưng tôi không mong đợi phải xóa mã của tôi cho điều này khi Tôi cập nhật jQuery. – billynoah

+0

@sinisake - Tôi đã cập nhật câu hỏi của mình - tôi chỉ có * "abc" * trong đó để chứng minh rằng hành vi không giới hạn trong việc đặt giá trị trống - nhìn lại nó làm cho câu hỏi của tôi hơi không rõ ràng. – billynoah

Trả lời

9

jQuery tự động cài đặt nó vào tùy chọn đầu tiên hoặc mặc định là một lỗi đã được cố định bài jQuery 1.10+

Xem liên kết này: https://bugs.jquery.com/ticket/13514

+3

vì vậy hãy để tôi nhận được điều này thẳng, toàn bộ thư viện jQuery đã được thay đổi để phù hợp với hành vi không phù hợp của IE9? Lol .. well nếu đó không phải là điều ngu ngốc nhất tôi đã nghe cả tuần. Nhưng nhờ liên kết ... Tôi tin rằng câu trả lời cho câu hỏi của tôi. – billynoah

Các vấn đề liên quan