Комментарии 15
Я вообще то спать хотел, а Вы…
+4
Если namespace для дата deprecated, то какой способ для записи множественных данных сейчас следует использовать?
0
Что мне нравится в ваших статьях — так это систематичность. Так держать)
Хотел бы попросить углубляться в детали реализации, а то немного из внутренностей возвращаемся к внешнему API. Ну и можно интересные куски кода из библиотеки приводить ^_^
Кстати, тема для холивара. Не согласен с обратным сравнением. Оно в целом не очень, так в топике ещё и теряет свой основной смысл — предохранение от присваивания:
Результату выполнения typeof и так ничего не присвоить
Результат выполнения функции изменить нельзя, а вот как раз «константа» очень даже изменяема. В итоге и код написан задом наперёд и смысла в этом нет)
Хотел бы попросить углубляться в детали реализации, а то немного из внутренностей возвращаемся к внешнему API. Ну и можно интересные куски кода из библиотеки приводить ^_^
Кстати, тема для холивара. Не согласен с обратным сравнением. Оно в целом не очень, так в топике ещё и теряет свой основной смысл — предохранение от присваивания:
'undefined' !== typeof sexClassesMap[elementClasses[i]]
Результату выполнения typeof и так ничего не присвоить
SEX_MALE === $('.user:first').prop('userSex')
Результат выполнения функции изменить нельзя, а вот как раз «константа» очень даже изменяема. В итоге и код написан задом наперёд и смысла в этом нет)
+4
Я вот не заметил описания одной интересной особенности — если через $.data читать числовые значения (даже если вы сохраняли число как строку в атрибуте data-*) то при чтении число преобразуется именно в число а не в строку как было бы при получении $.attr('data-*'). На первый взгляд совершенно безобидная ситуация, но если вдруг вы используете числа длиннее 20 знаков, и рассчитывали использовать строковое представление числа где то на странице, то вы неизбежно столкнетесь с проблемами, т.к. числа длинной более 20 знаков имеют только экспоненциальное представление.
0
Возможно, раньше был такой баг, но сейчас он уже не должен воспроизводиться, судя по коду. Там после приведения к числу значение нестрого сравнивается с исходной строкой и остается числом в результате только если равенство удовлетворяется.
Упомяну про эту особенность в посте чуть позже, когда за компьютером буду.
Упомяну про эту особенность в посте чуть позже, когда за компьютером буду.
0
Если происходит нестрогое сравнение (==) то строка преобразуется к числу, а затем сравниваются два числа а не их строковые представления, поэтому это сравнение не позволяет обойти эту особенность. К сожалению не проверял присутствует ли эта особенность в новых версиях, но в старых однозначно она есть, т.к. я сам наступал на эти грабли.
0
Наврал я про нестрогое сравнение, оказывается. Там сейчас так:
Так что все ок, где можно — число остается числом:
+data + "" === data ? +data
Как раз число приводится обратно к строке и сравнивается.Так что все ок, где можно — число остается числом:
> $('<span data-tweet-id="288852939949350900">').data()
Object {
tweetId: 288852939949350900
}
> $('<span data-tweet-id="288852939949350910">').data()
Object {
tweetId: "288852939949350910"
}
+2
Вот нравится мне эта серия статей про jQuery. Давно хотел в нём разобраться
+1
Неймспейсы в событиях никуда не деваются и мы их обязательно рассмотрим в будущем
Фух! Как же я был рад этому предложению
0
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
jQuery изнутри — атрибуты, свойства, данные