Создание функции плагина с помощью jQuery - PullRequest
1 голос
/ 11 апреля 2011

Эй, чуваки, у меня есть следующая функция:

$.fn.slideOut = function(speed,dir) { 
        this.animate({
            dir: '-1000px'
        }, speed);
    };

Но направление (dir) не переносится и тоже не выдает ошибку.

Я называю это так: $('#element').slideOut(500,'top');

Итак, мой вопрос = почему он не оживляет?(

Ответы [ 3 ]

5 голосов
/ 11 апреля 2011

Нельзя использовать переменную в левой части (имя) инициализатора литерального свойства объекта, поскольку у вас есть имя свойства "dir".Вам придется сделать это следующим образом:

$.fn.slideOut = function(speed,dir) { 
    var opts = {};
    opts[dir] = '-1000px';
    this.animate(opts, speed);
};

Немного не по теме, но, вероятно, стоит отметить, что эта подключаемая функция не будет цепочкой.Если у вас нет веских причин не возвращать this для возможности объединения (в этом случае вы можете просто вернуть то, что возвращает animate, поскольку animate возвращает this):

$.fn.slideOut = function(speed,dir) { 
    var opts = {};
    opts[dir] = '-1000px';
    return this.animate(opts, speed);
};
4 голосов
/ 11 апреля 2011

Если вы хотите использовать переменное имя свойства, вы не можете использовать объектные литералы.Сначала вы должны создать объект, а затем установить свойство с синтаксисом «доступа к массиву»:

$.fn.slideOut = function(speed,dir) {
    var options = {};
    options[dir] = '-1000px';
    this.animate(options, speed);
};
0 голосов
/ 11 апреля 2011

вы звоните

this.animate({
  dir: '-1000px'
}

в вашем плагине. Это нормально, что он не использует полученную в качестве параметра.

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