这和$(这个)之间的区别

时间:2010-09-15 03:49:35

标签: javascript jquery

  

可能重复:
  jQuery $(this) vs this

使用jQuery时,这与$(this)之间的区别是什么?

3 个答案:

答案 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对象。