2012-03-29 44 views
49

Tôi đang cố truy xuất thuộc tính dữ liệu của kiểu Boolean từ phần tử DIV html, tuy nhiên nó luôn trả về false khi chuỗi được chuyển thành boolean.Truy xuất dữ liệu boolean từ thuộc tính dữ liệu trong jquery

HTML

<div id='test' data-return="true"></div> 

JS

isreturn_str = $('#test').data('return'); 
isreturn = (isreturn_str === 'true'); 
if (isreturn) { 
    document.write("It is true"); 
} else { 
    document.write("It is false"); 
} 

đầu ra

Đó là sai

http://jsfiddle.net/neilghosh/494wC/

Trả lời

83

Các jQuery .data() phương pháp là thông minh về công nhận các giá trị boolean và số và chuyển đổi chúng thành loại mẹ đẻ của họ. Vì vậy, đây trả về boolean true, không "true":

$('#test').data('return'); 

Nếu bạn muốn để có được các dữ liệu thô (không có việc chuyển đổi dữ liệu tự động), bạn có thể sử dụng .attr():

$('#test').attr("data-return"); 

Xem các trường hợp thử nghiệm làm việc ở đây: http://jsfiddle.net/jfriend00/6BA8t/

+10

Hãy chắc chắn các giá trị thuộc tính "true" và "false" của bạn là trường hợp thấp hơn để hoạt động chính xác. –

+2

là có một cách để làm cho nó trường hợp không nhạy cảm, cho MVC khả năng tương thích? –

+0

@TomerW - No. '.data()' và '.attr()' và thậm chí hàm DOM '.getAttribute()' đều phân biệt chữ hoa chữ thường. – jfriend00

4

jQuery nhận chuỗi "true" vì nó là boolean đối tác (trong bối cảnh các thuộc tính dữ liệu) và do đó:

typeof isreturn_str; // boolean 

nhưng bạn đang nghiêm túc so với chuỗi 'true' trong đó sản lượng sai như là một chuỗi không phải là một boolean.

3

"true" được truyền nội bộ vào boolean (thử alert (typeof(isreturn_str))), do đó, việc so sánh === không thành công khi kiểm tra loại.

Bạn có thể gọi .toString()

isreturn_str = $('#test').data('return').toString(); 

http://jsfiddle.net/494wC/8/

+0

Liên kết tới fiddle không mở mã ở đây. Bạn có thể xem không? –

0

tôi đang sử dụng jquery 2.1.0 và tôi phải sử dụng eval

// $('#test').attr("data-return");" doesn't works 
eval($('#test').attr("data-return")); 
Các vấn đề liên quan