Maison  >  Article  >  interface Web  >  jQuery : résolution de problèmes en utilisant cette méthode click()

jQuery : résolution de problèmes en utilisant cette méthode click()

黄舟
黄舟original
2017-06-27 10:00:054849parcourir

Version jQ : jquery-1.7.2.js

    <div id="box">test</div>
<script>
    $(function(){ 
        $(&#39;#box&#39;).click(function(){ 
            //alert(this.html()); // 报错
            alert(this.innerHTML);// test
            alert($(this).html()); // test
        });    
    });</script>

Excusez-moi, après l'avoir passé via $('#box'), je je l'ai jQueryobject, pourquoi cela correspond-il à DOM object, mais $(this) est un objet jQuery ? Merci!

Il faut savoir qu'il y a js sans jquery, et qu'il n'y a pas de jquery sans js. C'est le truc de js. Ceci dans l'environnement d'exécution fonction appartient à js natif. Comment peut-il vous diriger vers l'objet jquery. Porter $(this) gilet est l'objet jquery.

this fait référence à comme objet d'environnement pour l'exécution de la fonction. Par exemple, lorsqu'il est appelé globalement, this est window. Donc votre this n'est pas renvoyé par $("#box"), ce n'est pas un objet JQ, mais l'objet dom du div qui appelle cette fonction. Veuillez comprendre cela attentivement. Taper sur un téléphone portable est très difficile. Si vous ne comprenez toujours pas quelque chose, allumez l'ordinateur demain et il dira que

$('#box') a renvoyé l'objet JQuery, vous pouvez donc n'appelez la méthode click() que plus tard. Veuillez noter que cette étape est très importante pour

var $box = $(&#39;#box&#39;);
$box.click(function(){    //TODO});

, l'objet environnement d'exécution de la fonction n'a rien à voir avec l'objet obtenu par votre code. pour lier un événement à ce DOM Lorsque l'événement
est déclenché, c'est juste le DOM

$(this) ne change pas l'objet DOM. Il est juste enveloppé une fois. , tout comme ajouter une couche de shell, le transformer en objet JQuery, afin que les méthodes JQuery puissent être utilisées, au lieu de rechercher le DOM comme le sélecteur entrant, c'est donc toujours le div.box qui déclenche actuellement cet événement. JQuery enveloppé peut être restauré dans un objet DOM.
Regardez le code suivant pour obtenir l'objet qui a déclenché l'événement via l'objet événement :

$(&#39;.box&#39;).click(function(event){    console.log(event.target);    console.log(event.target==this);//非事件冒泡情况下为true
    console.log($(this).get(0)==this);//true});

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn