Плагин - получить ссылку на переданный объект - PullRequest
0 голосов
/ 29 ноября 2009

Я пытаюсь создать свой первый плагин jQuery. я получил функцию-прототип myListview и хочу применить к ней плагин (с именем initLV).

функция:

function myListview(div)
{
    this.div = div;
    $(this).initLV(); // apply the plugin
}

как видите, я передаю весь объект-прототип плагину. мой вопрос: как я могу получить доступ к div объекта изнутри плагина? вот мой код плагина - первое предупреждение работает, но все остальные не работают: /

(function ($) {
  $.fn.initLV = function () 
  {
    alert($("tr",this.div).length); // works
    alert(this.div.html());         // don't work
    alert($(this.div).html());      // don't work
    alert($(this).div.html());      // don't work
  }
})(jQuery);

просто не имеет смысла, что 1-е предупреждение работает, а остальные нет. что может быть не так?

Ответы [ 2 ]

1 голос
/ 29 ноября 2009

Я думаю, вы немного запутались с тем, как работают плагины jQuery. Плагин jQuery позволяет выполнять действия с объектом jQuery. Похоже, ваш код создает пользовательский объект, а затем пытается его «jQuery-ify». Я не думаю, что ваша первая функция даже работает как действительный jQuery. Я думаю, что это просто работает, потому что jQuery хорош в игнорировании неверных аргументов.

Было бы полезно, если бы я знал, какова ваша конечная цель, однако я думаю, что вы могли бы попробовать что-то вроде этого:

Ваша функция:

function myListview(div)
{
    $(div).initLV();
}

Ваш плагин

(function ($) {
    $.fn.initLV = function () {
        // "this" will be a jQuery object storing your 
        // div, or whatever else the jQuery object 
        // contains when it gets called.
        alert($("tr", this).length);  // works
        alert(this.html());           // works
        alert(this.find("tr").html());// works
    }
})(jQuery);
1 голос
/ 29 ноября 2009

Я думаю, div - это только поле того, что есть this. Что div содержит. Если он содержит элемент html, например, вы должны вместо этого использовать alert($(this[0].div).html());. Но лучше использовать ответ Дэна Герберта, который демонстрирует правильный способ написания плагина.

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