Использование $ .data () в jQuery для хранения флага элемента - PullRequest
1 голос
/ 20 апреля 2011

Я пишу простой плагин jQuery, который превращает входной тег в элемент, отформатированный во времени (при размытии он изменит 245p в 14:45).

Поскольку я не хочу применять времяформатировать события в одном и том же элементе дважды, мне нужен способ обнаружить, что к конкретному элементу в представленном списке еще не применен формат.

Это соответствующая часть кода:

var methods = {
    init : function(sel) {
        var $this = $(sel);
        return $this.each(function(){
            var data = $(this).data('time_formatted');
            if (data) {
                return;
            } else {
                $(this).data('time_formatted', true);

Я слышал, что использование $(sel).data() в плагине не очень хорошая идея;вместо этого используйте $.data().Я не знаю почему, это только то, что я слышал;честно говоря, я не знаю, в чем разница.

Поэтому мой вопрос заключается в том, является ли способ выполнить проверку, если к конкретному элементу применен форматер времени к нему в плагине?

Если вы хотите увидеть плагин в его текущем состоянии разработки, см. http://jsfiddle.net/userdude/xhXCR/.

Спасибо!

Джаред

1 Ответ

4 голосов
/ 20 апреля 2011

Где вы слышали, что использование .data() не хорошо? Страница авторизации jQuery говорит:

Часто при разработке плагина вам может потребоваться сохранить состояние или проверить, был ли ваш плагин уже инициализирован для данного элемента.Использование метода jQuery data - отличный способ отслеживать переменные для каждого элемента.Однако вместо того, чтобы отслеживать кучу отдельных вызовов данных с разными именами, лучше использовать один литерал объекта для размещения всех ваших переменных и обращаться к этому объекту через одно пространство имен данных.

Так что все должно быть прекрасно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...