Эта строка
$(this).attr("id").replace("_button","");
эквивалентно этому?
this.attr("id").replace("_button","");
Эта строка
$(this).attr("id").replace("_button","");
эквивалентно этому?
this.attr("id").replace("_button","");
поскольку this
всегда содержит ссылку на object of invocation
, это действительно зависит от , где вы вызываете этот код.
Если вы вызываете это в jQuery event handler
, this
является ссылкой на сам DOM element
, поэтому вам нужно перевести его в объект jQuery, вызвав $()
, прежде чем вы сможете вызвать на нем методы jQuery. Это, в свою очередь, означает
this.attr("id").replace("_button","");
там не будет работать.
Если вы используете метод плагина, например, this
уже IS a jQuery object
(reference
), и обе строки на самом деле будут делать то же самое. Конечно, если this
уже есть jQuery object
, вы выполняете дополнительную работу, пытаясь снова проанализировать его.
Пример:
$.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
не совпадают.
В Javascript ключевое слово "this
" относится к объекту, в котором вы находитесь. Итак, если вы вызываете myObj.method1()
, тогда внутри кода метода method1 "this
" будет ссылаться на myObj
.
В jQuery большинство операций возвращают объект набора результатов jQuery, который часто называют оберткой jQuery. Например, селектор $("a")
вернет набор результатов jQuery, содержащий все элементы <a>
DOM. $("a").get(0)
вернет первый элемент DOM привязки, $("a").get(1)
вернет второй якорь и т.д.
Итак, $(this)
относится к объекту оболочки jQuery, а this
относится к элементу DOM.
Итак, суммируем все: $(this).get(0)
будет таким же, как this
.
Это зависит от того, какой контекст вы используете.
$(this)
- объект jQuery, а this
- объект DOM.
Итак, они не совпадают.
Если вы разрабатываете плагин jquery, тогда this
совпадает с $(this)
.
Нет. Похоже, вы находитесь в контексте закрытия, используемого для jquery-метода. Внутри функции он указывает на текущий объект DOM, поэтому функции jquery не будут возможны. Вот почему он обернут функцией jquery для получения этого объекта.
this
всегда ссылается на объект, членом которого является текущая функция. Если функция глобальна, это обычно объект window
, по крайней мере, если вы находитесь в веб-браузере.
$(this)
фактически $()
(основная функция jQuery), вызываемая с указанным выше значением this
в качестве параметра. Он переносит this
в объект jquery, который предлагает все методы jQuery. Эти методы недоступны только для this
.
Я думаю, что нет.
Вместо этого вы можете использовать this.id.replace( "_ button", "").