Эта строка
$(this).attr("id").replace("_button","");
эквивалентный этому?
this.attr("id").replace("_button","");
поскольку this
всегда содержит ссылку на объект вызова
, это действительно зависит от того, где вы вызываете этот код.
Если вы вызываете this в обработчике событий jQuery
, this
является ссылкой на DOM-элемент
, поэтому вам нужно преобразовать его в объект jQuery, вызвав $()
, прежде чем вы сможете вызвать методы jQuery на нем. Это, в свою очередь, означает, что
this.attr("id").replace("_button","");
не будет работать там.
Если вы пишете, например, метод плагина, то this
уже ЕСТЬ объект jQuery
(reference
), и обе строки фактически будут делать одно и то же. Конечно, если this
уже является объектом jQuery
, вы делаете лишнюю работу, пытаясь разобрать его снова.
пример:
$.fn.yourplugin = function(){
// this refers to a jQuery object
return this.each(function(i,v){
});
});
Это зависит от контекста, но, вероятно, нет.
Если у вас есть обработчик событий, скажите:
$('#_button_foo').click(function() {
$(this).attr("id").replace("_button","");
});
Затем this
будет ссылаться на элемент DOM , тогда как $ (this)
создает объект jQuery. и позвольте вам вызывать функции jQuery для этого объекта.
С другой стороны, если вы разрабатываете плагин и имеете
jQuery.fn.plugin = function() {
this.each(function() {...});
}
, то this
относится к объекту jQuery, для которого вы вызываете метод.
this
относится к объекту, в котором он используется. В глобальной области видимости он относится к window
, а в вызове метода он относится к объекту, на котором вызывается метод.
В вашем случае this
, вероятно, будет ссылаться на элемент в DOM, который извлекается с помощью другого механизма jQuery, например, события (click
, hover
и т.д.) или итерации по списку элементов (например, jQuery.each
). В этом случае вы получите только этот элемент DOM, но не объект jQuery с расширением методов jQuery, таких как attr
. Поэтому вам нужно превратить его в объект jQuery с помощью функции конструктора $
.
$(this) превратит DOM-объект в объект jQuery, так что вы сможете использовать функции jQuery.
Таким образом, $(this)
и this
- это не одно и то же.
Это зависит от того, в каком контексте вы его используете.
$ (this)
- это объект jQuery, а this
- объект DOM.
Значит, это не одно и то же.
Если вы разрабатываете плагин jquery, то this
совпадает с $ (this)
.
В Javascript ключевое слово 'this
' относится к объекту, в контексте которого вы находитесь. Так, если вы вызываете myObj.method1()
, то внутри кода method1 'this
' будет ссылаться на myObj
.
В jQuery большинство операций возвращают объект jQuery result set, часто называемый jQuery wrapper. Например, селектор $("a")
вернет jQuery result set, содержащий все элементы DOM.
$("a").get(0)
вернет первый элемент якоря DOM, $("a").get(1)
вернет второй якорь и т.д.
Итак, $(this)
относится к объекту-обертке jQuery, а this
относится к элементу DOM.
Итак, подведем итог: $(this).get(0)
будет то же самое, что и this
.
Нет. Похоже, вы находитесь в контексте закрытия, используемого для метода jquery. Внутри функции он указывает на текущий объект DOM, поэтому функции jquery невозможны. Вот почему он обернут функцией jquery для получения этого объекта.
this
всегда относится к объекту, членом которого является текущая функция. Если функция глобальная, то это обычно объект window
, по крайней мере, если вы находитесь в веб-браузере.
$(this)
- это фактически $()
(основная функция jQuery), вызванная с упомянутым ранее this
в качестве параметра. Она оборачивает this
в объект jquery, который предлагает все методы jQuery. Эти методы недоступны только для this
.
Думаю, нет.
Вместо этого вы можете использовать this.id.replace ("_ button", "").