Я просто не понимаю $ .fn в jQuery - PullRequest
0 голосов
/ 15 декабря 2009

Что не так с этим синтаксисом?

<script>
jQuery(function() {
    jQuery.fn.myfunction(myparam) {
        alert(myparam);
        return 0; // return jQuery?
    }
    myfunction('Hello World');
});
</script>

Я пытаюсь узнать, как расширить jQuery.

Ответы [ 4 ]

5 голосов
/ 15 декабря 2009
jQuery.fn.myfunction(myparam) {

должно быть

jQuery.fn.myfunction = function(myparam) {

при назначении свойства myfunction объекта jQuery.fn значение function () {...

4 голосов
/ 15 декабря 2009

Ваш синтаксис пытается вызвать метод с именем myFunction для ссылки jQuery.fn.

Чтобы расширить объект jQuery, вам нужен следующий синтаксис:

<script>
jQuery(function() {
    jQuery.fn.myfunction = function(myparam) {
        alert(myparam);
        return this; // returns the current jQuery object.
    }

    // Select something with jQuery using the $() function here.
    $().myfunction('Hello World');
});
</script>
3 голосов
/ 15 декабря 2009

Метод, определенный через jQuery.myFunction, является «статической» функцией. Вы вызываете его, используя $ .yourFunction, и он не привязан к набору результатов.

И наоборот, функция, определенная в jQuery.fn.myFunction, связана с набором результатов; если вы сделаете «this» внутри этой функции, вы получите объект jQuery, который использовался для ее вызова. Другими словами, если вы сделаете $ ("P"). MyFunction () "this" в моей функции будет равно $ ("P").

1 голос
/ 15 декабря 2009

Из документации ...

jQuery.fn.extend({
  check: function() {
    return this.each(function() { this.checked = true; });
  },
  uncheck: function() {
    return this.each(function() { this.checked = false; });
  }
});

Подробнее здесь .

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