2012-10-19 3 views
1

У меня есть якорный элемент:Строка равенства возвращение ложным, когда строки равны

<a id="buyBtn" href="#" alt="Purchase" title="Buy now" data-enabled="true"> 

Когда она нажата, я делаю это:

enabled = $(this).data('enabled') == "true"; 
console.log(enabled); 

Однако консоль показывает false. Сначала я использовал ===, но это давало ложное значение, поэтому я переместился на ==.

+0

Что вы получаете от 'console.log ($ (this) .data ('enabled'))'? – jahroy

+0

@jahroy 'true'. – xbonez

+0

Рабочий пример, показывающий, что здесь играет: http://jsfiddle.net/FsP3j/1/ –

ответ

10

Принятый ответ на этот вопрос подробно, почему: метод

Retrieve boolean data from data attribute in jquery

JQuery в .data() достаточно умен, чтобы преобразовать «истинные»/«ложные» строки данных в реальные булевы значения.

Строгий оператор сравнения проверяет типы и не работает, потому что вы сравниваете строку с булевым.

"true" === true // false 
+0

ой, ничего себе ... sheesh. Я бы никогда не догадался. Спасибо. – xbonez

+0

Конечно, демонстрация: http://jsfiddle.net/2bfDV/ –

Смежные вопросы