Question Quelle est la différence entre '$ (this)' et 'this'?


Je travaille actuellement à travers ce tutoriel: Premiers pas avec jQuery

Pour les deux exemples ci-dessous:

$("#orderedlist").find("li").each(function (i) {
    $(this).append(" BAM! " + i);
});
$("#reset").click(function () {
    $("form").each(function () {
        this.reset();
    });
});

Remarquez dans le premier exemple, nous utilisons $(this) pour ajouter du texte à l'intérieur de chaque li élément. Dans le deuxième exemple, nous utilisons this directement lors de la réinitialisation du formulaire.

$(this) semble être utilisé beaucoup plus souvent que this.

Je pense que c'est dans le premier exemple, $() est en train de convertir li élément dans un objet jQuery qui comprend le append() fonction alors que dans le deuxième exemple reset() peut être appelé directement sur le formulaire.

Fondamentalement nous avons besoin $() pour les fonctions spéciales jQuery uniquement.

Est-ce correct?


514
2018-06-27 00:18


origine


Réponses:


Oui, vous n'avez besoin de $ () que lorsque vous utilisez jQuery. Si vous voulez que l'aide de jQuery pour faire des choses DOM juste garder cela à l'esprit.

$(this)[0] === this

Fondamentalement, chaque fois que vous obtenez un ensemble d'éléments retour jQuery le transforme en un Objet jQuery. Si vous savez que vous n'avez qu'un seul résultat, ça va être dans le premier élément.

$("#myDiv")[0] === document.getElementById("myDiv");

Etc...


475
2018-06-27 00:23



$() est la fonction constructeur jQuery.

this est une référence à l'élément DOM de l'invocation.

Donc, fondamentalement, dans $(this), vous passez juste la this dans $() en tant que paramètre pour que vous puissiez appeler les méthodes et fonctions jQuery.


352
2017-09-15 04:03



Oui, vous avez besoin $(this) pour les fonctions jQuery, mais lorsque vous voulez accéder aux méthodes javascript de base de l'élément qui n'utilisent pas jQuery, vous pouvez simplement utiliser this.


86
2018-06-27 00:24



En utilisant jQuery, il est conseillé d'utiliser $(this) d'habitude. Mais si vous savez (vous devez apprendre et connaître) la différence, il est parfois plus pratique et plus rapide d'utiliser juste this. Par exemple:

$(".myCheckboxes").change(function(){ 
    if(this.checked) 
       alert("checked"); 
});

est plus facile et plus pur que

$(".myCheckboxes").change(function(){ 
      if($(this).is(":checked")) 
         alert("checked"); 
});

67
2018-05-21 14:57



this est l'élément, $(this) est l'objet jQuery construit avec cet élément

$(".class").each(function(){
 //the iterations current html element 
 //the classic JavaScript API is exposed here (such as .innerHTML and .appendChild)
 var HTMLElement = this;

 //the current HTML element is passed to the jQuery constructor
 //the jQuery API is exposed here (such as .html() and .append())
 var jQueryObject = $(this);
});

Un regard plus profond

thisMDN est contenu dans un contexte d'exécution


42
2018-02-10 23:32



Oui, en utilisant $(this), vous avez activé la fonctionnalité jQuery pour l'objet. En utilisant juste this, il n'a que des fonctionnalités Javascript génériques.


36
2018-06-27 00:23



ce référencer un objet javascript et $ (ceci) utilisé pour encapsuler avec jQuery.

Exemple => 

// Getting Name and modify css property of dom object through jQuery
var name = $(this).attr('name');
$(this).css('background-color','white')

// Getting form object and its data and work on..
this = document.getElementsByName("new_photo")[0]
formData = new FormData(this)

// Calling blur method on find input field with help of both as below
$(this).find('input[type=text]')[0].blur()

//Above is equivalent to
this = $(this).find('input[type=text]')[0]
this.blur()

//Find value of a text field with id "index-number"
this = document.getElementById("index-number");
this.value

or 

this = $('#index-number');
$(this).val(); // Equivalent to $('#index-number').val()
$(this).css('color','#000000')

-2
2017-11-28 12:49