2012-03-30 24 views
6

tôi đang nâng cấp từ jQuery 1.5.1 - Tôi đã đọc về cách thức "mới" để "kiểm tra" hộp kiểm tra (trong 1.6) sử dụngCách thích hợp để bỏ chọn hộp kiểm trong jQuery 1.7 là gì?

prop("checked", true); 

Nhưng cách chính xác/ưa thích để loại bỏ là những gì một hộp kiểm?

Cả hai phương pháp xuất hiện để làm việc

$('#someSelector').removeProp("checked"); 

hoặc

$('#someSelector').prop("checked", false); 

Có một sự phân biệt giữa các phương pháp này? Tôi nên sử dụng cái nào?

Cảm ơn

Trả lời

12

Theo http://api.jquery.com/removeprop/ .removeProp không nên được sử dụng để xóa kiểm tra. (vì nó hoàn toàn bị xóa và không thể được thêm lại.)

Phương thức .removeProp() loại bỏ các thuộc tính được đặt bởi phương thức .prop().

Với một số thuộc tính tích hợp của phần tử DOM hoặc đối tượng cửa sổ, trình duyệt có thể phát sinh lỗi nếu cố gắng xóa thuộc tính . jQuery trước tiên gán giá trị không xác định cho thuộc tính và bỏ qua bất kỳ lỗi nào mà trình duyệt tạo ra. Nói chung, chỉ cần cần thiết để xóa thuộc tính tùy chỉnh đã được đặt trên đối tượng, và không được tích hợp sẵn (thuộc tính gốc).

Lưu ý: Không sử dụng phương pháp này để loại bỏ các thuộc tính gốc như được chọn, vô hiệu hóa hoặc được chọn. Thao tác 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ế.

-1
$('#someSelector').removeAttr('checked'); 

Tháo thuộc tính kiểm tra và bạn sẽ được tốt để đi.

Thông tin thêm về prop vs attr tại đây. Họ cũng đề cập đến thuộc tính đã chọn và gọi nó là một thuộc tính, chứ không phải thuộc tính.

http://api.jquery.com/prop/

+0

Điều đó không trả lời được câu hỏi ... tại sao câu trả lời của bạn tốt hơn '.removeProp (" checked ")'? Và tại sao nó là tốt hơn so với thay thế '.prop (" kiểm tra ", false)' hoặc '.attr (" checked ", false)'? – Sparky

+1

"thuộc tính" là một tập hợp con của "thuộc tính", do đó luôn luôn sử dụng 'prop' thay cho' attr' là hoàn toàn có thể chấp nhận được, và bạn không bao giờ phải tìm ra nếu 'property' là một' thuộc tính'. – Sparky

+1

Các tài liệu jQuery bạn đang đề cập đến thực sự nói rằng nó là thích hợp hơn để sử dụng prop() trong trường hợp này. "Nếu sử dụng jQuery 1.6, mã nếu ($ (elem) .attr (" checked ")) sẽ truy lục thuộc tính nội dung thực tế, không thay đổi khi hộp kiểm được chọn và bỏ chọn. Nó chỉ có nghĩa là lưu trữ mặc định hoặc giá trị ban đầu của thuộc tính đã chọn. " – Niko

3

hiya tôi mặc dù comment của tôi ở trên sẽ là quá nhiều văn bản nhét trong cái viết nó ở đây cho rõ ràng: (Và tôi đồng ý với @Claudio)

Nếu điều này không giúp cho tôi biết Tôi sẽ xóa cổ vũ của tôi! :)

nên từ đây: http://blog.jquery.com/2011/05/12/jquery-1-6-1-released/

[quote] như 1,6 i nghĩ ...

Giá trị phần tử là cái gì khác thì đó là tài sản hoặc giá trị thuộc tính của. Khi bạn muốn bỏ chọn hộp kiểm, bạn muốn xóa thuộc tính được kiểm tra để sử dụng $ (“# subscribe: checked”). Prop (“checked”, false);

[quote]

jQuery 1.6+

Sử dụng .prop mới() chức năng:.

$ ("myCheckbox ") chống đỡ (" kiểm tra" , thật);

$ (". MyCheckbox"). Prop ("checked", false);

Setting "checked" for a checkbox with jQuery? hy vọng điều đó sẽ giúp ích, bạn đúng là tôi nghĩ! chúc mừng!

11

Để trả lời câu hỏi của bạn một cách chính xác hơn:

tôi sẽ luôn luôn thích

$('#someSelector').prop('checked', false); 

qua

$('#someSelector').removeProp('checked'); 

vì một sự khác biệt quan trọng giữa thuộc tính và tài sản là trong trường hợp này, đó loại bỏ các thuộc tính bằng để thiết lập các tài sản (được kiểm tra) để sai.

Xóa thuộc tính "đã chọn" của hộp kiểm không có ý nghĩa gì cả, vì hộp kiểm sẽ luôn được chọn hoặc bỏ chọn. Do đó việc đặt thuộc tính thành false để bỏ chọn hộp là hợp lý, loại bỏ thuộc tính thì không.

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