Эта строка
$(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", "").