Pull to refresh

Comments 15

Я вообще то спать хотел, а Вы…
Я тоже хотел запостить и уйти на боковую :) Но что-то в праздники совсем режим, которого и так не было толком, еще больше съехал.
Если namespace для дата deprecated, то какой способ для записи множественных данных сейчас следует использовать?
namespace как генератор события deprecated, а множественная запись с этим никак не связана, все те же:

$([selector]).data( {
    'key1': 'value1',
    'key2': 'value2'
} );
Спасибо, понял что поторопился
Что мне нравится в ваших статьях — так это систематичность. Так держать)

Хотел бы попросить углубляться в детали реализации, а то немного из внутренностей возвращаемся к внешнему API. Ну и можно интересные куски кода из библиотеки приводить ^_^

Кстати, тема для холивара. Не согласен с обратным сравнением. Оно в целом не очень, так в топике ещё и теряет свой основной смысл — предохранение от присваивания:

'undefined' !== typeof sexClassesMap[elementClasses[i]]

Результату выполнения typeof и так ничего не присвоить

SEX_MALE === $('.user:first').prop('userSex')

Результат выполнения функции изменить нельзя, а вот как раз «константа» очень даже изменяема. В итоге и код написан задом наперёд и смысла в этом нет)
Чорт, а я специально немного отошел от кода после комментария о том, что статьи на диктант по исходникам похожи :) Спасибо за отзыв.
А насчет сравнения — привычка такая просто. По-моему так даже читается удобнее. Но тема для холивара, да.
Я вот не заметил описания одной интересной особенности — если через $.data читать числовые значения (даже если вы сохраняли число как строку в атрибуте data-*) то при чтении число преобразуется именно в число а не в строку как было бы при получении $.attr('data-*'). На первый взгляд совершенно безобидная ситуация, но если вдруг вы используете числа длиннее 20 знаков, и рассчитывали использовать строковое представление числа где то на странице, то вы неизбежно столкнетесь с проблемами, т.к. числа длинной более 20 знаков имеют только экспоненциальное представление.
Возможно, раньше был такой баг, но сейчас он уже не должен воспроизводиться, судя по коду. Там после приведения к числу значение нестрого сравнивается с исходной строкой и остается числом в результате только если равенство удовлетворяется.
Упомяну про эту особенность в посте чуть позже, когда за компьютером буду.
Если происходит нестрогое сравнение (==) то строка преобразуется к числу, а затем сравниваются два числа а не их строковые представления, поэтому это сравнение не позволяет обойти эту особенность. К сожалению не проверял присутствует ли эта особенность в новых версиях, но в старых однозначно она есть, т.к. я сам наступал на эти грабли.
Наврал я про нестрогое сравнение, оказывается. Там сейчас так:
+data + "" === data ? +data
Как раз число приводится обратно к строке и сравнивается.

Так что все ок, где можно — число остается числом:
> $('<span data-tweet-id="288852939949350900">').data()
Object {
    tweetId: 288852939949350900
}

> $('<span data-tweet-id="288852939949350910">').data()
Object {
    tweetId: "288852939949350910"
}
Вот нравится мне эта серия статей про jQuery. Давно хотел в нём разобраться
Спасибо, рад что интересно.
я даже сохраняю это в заметках Evernote чтобы потом освежать периодически в памяти
Неймспейсы в событиях никуда не деваются и мы их обязательно рассмотрим в будущем

Фух! Как же я был рад этому предложению
Sign up to leave a comment.

Articles