2010-09-15 4 views
0

Possible en double:
jQuery $(this) vs this

Lorsque vous utilisez jQuery, ce qui est la différence entre cela et $ (cela)?

+0

en double de http://stackoverflow.com/questions/1051782/jquery-this-vs-this – RPM1984

+0

http://stackoverflow.com/questions/1051782/jquery-this-vs-this/3714581#3714581 – Reigel

Répondre

0

Généralement, utilisez $ (this) lorsque vous voulez le suivre avec une autre fonction jquery pour un ensemble enveloppé. Utilisez ceci lorsque vous essayez d'accéder à un élément (tel que .name) à partir du DOM.

Un exemple de code I qui ajoute une autre ligne à une table, basée sur une ligne de modèle qui est ailleurs, cachée dans le formulaire et non visible. Le code ci-dessous utilise à la fois $ (this) et ceci, dans différents contextes.

{% 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(); 
     }); 
    } 
-1

$(this) est le contexte de l'élément sur lequel vous travaillez ou celui qui obtient l'événement.

$('#MyElement').click(function(){ $(this).doSomething }) 

au-dessus des $(this) à l'élément référés qui a un id de MyElement et qui a été cliqué.

this est simplement l'objet javascript normal.

1

this est d'appeler des méthodes DOM.
$(this) consiste à appeler les méthodes jQuery.

Questions connexes