可能重复:
jQuery $(this) vs this
使用jQuery时,这与$(this)之间的区别是什么?
答案 0 :(得分:1)
this
是调用DOM方法。
$(this)
是调用jQuery方法。
答案 1 :(得分:0)
通常,当你要用另一个jquery函数跟进它时,使用$(this)作为包装集。当您尝试从DOM访问元素(例如.name)时使用此方法。
我所拥有的一些代码示例,它根据其他地方的模型行向表中添加另一行,隐藏在表单中并且不可见。下面的代码在不同的上下文中使用$(this)和this。
{% comment %}
llforms_add_row('ir'): used to add a new row on a repeating form.
if rowtype is 'ir', looks for a <div id="ir_row_blankform"> and copies it
to the end of <div id="ir_rows">.
{% endcomment %}
function llforms_add_row(row_type) {
var new_row=$('#'+row_type+'_row_blankform').clone();
var rows_tag='#'+row_type+'_rows';
{# find the highest row number in use #}
var highest=1;
$(rows_tag).children().each(function(n){
var seq=$(this).attr('rownum')*1;
if (seq > highest) highest=seq;
});
highest += 1;
{# massage the new row into what we need #}
var new_id=highest.toString();{# Just the numeric part of the id #}
var new_row_id=row_type+'_row_'+new_id;{# The full DOM id #}
new_row.attr('style',"display:none");{# We will fade it in, so start it invisible #}
new_row.attr('id',new_row_id);
new_row.attr('rownum',new_id);
$('input', new_row).each(function(n){
this.name=this.name.substring(0,this.name.length-9)+new_id;
this.id=this.name;
});
$('a', new_row).each(function(n) {
this.href=this.href.replace('blankform',new_id);
});
new_row.appendTo(rows_tag);
$('#'+new_row_id).slideDown('fast',function(){
$('input:first', new_row).focus();
});
}
答案 2 :(得分:-1)
$(this)
是您正在处理的元素或获取事件的元素的上下文。
$('#MyElement').click(function(){ $(this).doSomething })
在上面$(this)
引用了id为MyElement
且点击过的元素。
this
只是普通的javascript对象。