Подтвердить что ты не робот

Когда должен использоваться период после $в jQuery?

Я начинаю работать в JQuery.

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

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

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

Спасибо.

4b9b3361

Ответ 1

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

$.property
jQuery.property

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

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

$(arguments)
alert("arguments!")

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

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

$trim(str)

Ответ 2

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

$('some selector')

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

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

typeof($.trim) //returns "function"
typeof($trim) //returns "undefined"

Ответ 3

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

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

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

Ответ 4

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

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

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

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