Когда следует использовать точку после $ в jQuery? - PullRequest
22 голосов
/ 02 августа 2010

Я новичок в JQuery.

Когда следует использовать точку после $?

$.trim(str), а не $trim(str)?

И некоторые случаи без точки: $(document).ready, но не $.(document).ready?

Спасибо.

Ответы [ 4 ]

19 голосов
/ 02 августа 2010

В jQuery $ - это имя переменной, например foo или bar, которая ссылается на глобальный объект jQuery.Если вы хотите получить доступ к свойству объекта jQuery, используйте точку.Они в основном одинаковы:

$.property
jQuery.property

(Поскольку $ - это переменная, как и любая другая, вы можете установить для нее любое значение. Это может произойти, если вы включите Прототип библиотека после включения библиотеки jQuery, в результате чего $ указывает на псевдоним функции document.getElementById.

Объект jQuery также является функцией, поэтомуВы можете вызывать эту функцию так же, как и любую другую функцию:

$(arguments)
alert("arguments!")

С другой стороны, $trim - это просто еще одна глобальная переменная, например $ или location, котораяфункция, которую вы определили сами:

var $trim = function(arguments) {
    return "foo";
};

$trim(str)
18 голосов
/ 02 августа 2010

Я не верю, что у вас есть выбор, только один синтаксис правильный и действительно будет работать. Символ $ является не чем иным, как сокращенной записью для функции jQuery, поэтому, когда вы пишете:

$('some selector')

Вы вызываете функцию с именем jQuery и передаете строку, или, в вашем случае, вы передаете объект document.

Когда дело доходит до вызова метода, такого как вспомогательный метод, такой как trim, вам нужно будет использовать следующий синтаксис: jQuery.trim() или $.trim() Это легко проверить, просто попробуй это:

typeof($.trim) //returns "function"
typeof($trim) //returns "undefined"
3 голосов
/ 02 августа 2010

Когда вы обращаетесь к статическому методу jQuery, который недоступен в прототипе, скажем, элемент DOM.trim - это статический метод, предоставляемый API.

Нет $.fn.trim, и мы не можем надежно полагаться на String.prototype.trim, поскольку методы могут отличаться.

Относительно $trim, которое не определеноtrim - это метод $, который является jQuery.Вы можете сделать либо $['trim'], либо $.trim, и это должен быть единственный способ получить к нему доступ.

2 голосов
/ 02 августа 2010

Синтаксис $.foo означает, что $ рассматривается как объект с полем с именем foo, которое обычно является функцией, которую вы вызываете. Так что на самом деле это ничем не отличается от автономной функции с именем foo - просто с префиксом $., чтобы отличить ее от любой другой функции и связать ее с библиотекой jQuery.

Когда вы используете $(something).foo, вы передаете something в функцию jQuery, и результат зависит от того, что вы передаете (может быть селектором для поиска существующего объекта, или это может быть клочок HTML для создания нового объекта, или это может быть функция, которую нужно зарегистрировать для запуска при загрузке страницы). В любом случае вы затем вызываете foo для полученного возвращенного объекта, который может быть применен к нескольким объектам DOM, если переданный селектор идентифицирует класс, например.

Первый синтаксис используется, когда функция jQuery работает не с объектами DOM (частями страницы HTML), а с другими объектами. Например, строка ($.trim) или массив ($.each). Это не элементы страницы, это просто чистые данные в JavaScript.

Второй синтаксис используется при работе с элементами DOM - вы используете $(something) для создания объекта jQuery, который является оберткой вокруг нуля или более элементов DOM. Затем вы вызываете функции возвращаемой оболочки, чтобы удобно манипулировать объектами, которые она упаковывает.

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