-1
votes

Comment changer une variable globale à l'intérieur des sélecteurs JQuery?

Je développe un site Web, qui utilise jQuery.Inide ce code, je dois modifier la valeur d'une variable à l'intérieur d'un sélecteur de jQuery et obtenir la valeur modifiée après cela. Est-il possible de le faire? Comment puis-je réaliser ceci? Si possible, je pourrais me montrer un code d'extrait / exemple?

J'ai essayé de déclarer la variable globale, mais sans succès aussi. xxx

Comment puis-je faire Le sélecteur numéro 1 ou 2 incendie après le sélecteur numéro 3? Est-il possible?


4 commentaires

Pouvez-vous créer une nouvelle variable = index, puis modifier et alerter cette variable?


Poste associé: Pourquoi Ma variable est-elle non altérée après que je la modifie à l'intérieur d'une fonction?


J'ai reformulé ma question, jetez un coup d'oeil.


Cela semble être un XY Problème . Fournir une explication de niveau plus élevé de ce que vous devez accomplir avec suffisamment de HTML pour créer un exemple de reproductible minimal


3 Réponses :


2
votes

JavaScript exécute le code de manière asynchrone. En d'autres termes, l'ensemble du code s'exécute au "même temps". Donc, tout d'abord, il exécutera l'index var; code>. Étant donné que la jQuery .Click code> vous attend de cliquer sur le bouton, il ignorera les deux fonctionnalités .Click code> et passer à l'alerte. Puisque l'index est indéfini, il dira index = non défini code>. Pour résoudre ce problème, déplacez la fonction d'alerte à l'intérieur de la fonction .Click code> de sorte que l'alerte s'exécute après avoir cliqué sur le bouton.

p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<button id="button1"></button>
<button id="button2"></button>


3 commentaires

J'ai reformulé ma question, jetez un coup d'oeil.


La fonction jQuery .Cliquez sur la fonction que vous aviez modifié l'index de la variable. C'est juste que l'alerte s'exécute avant de donner une valeur indicielle. IDK Comment faire cela, mais disons que vous avez ajouté d'une manière ou d'une autre manière a ajouté un temps d'attente pendant 5 secondes et cliqué sur le bouton pour modifier l'index en 1 avant ces 5 secondes, l'alerte dirait index = 1


J'ai mis à jour ma solution. Regardez le deuxième extrait. Je pense que cela devrait vous expliquer cela mieux.



1
votes

Les choses qui se produisent lorsque vous cliquez sur l'un des boutons. Ceux que vous définissez à l'intérieur de la fonction de clic-manutention (voir Ici ):

var index;
$(document).ready( function(){

    $("#button1").click(function(){
        index = 1;
    });

    $("#button2").click(function(){
        index = 2;
    });

    //after, i need the value of the index for another selector:

    $("button[id^=myButton]").click( function(){ 
        if (this.id == 'myButton'+index) {
            ...
        }
    }
}


1 commentaires

J'ai reformulé ma question, jetez un coup d'oeil.



0
votes

Comment changer une variable globale à l'intérieur des sélecteurs JQuery? P>

n'utilise pas une variable globale forte> dans ce cas. Vous avez une chance d'une collision variable avec tout autre code (JQuery ou tout autre script que vous utilisez). Vous pouvez simplement placer index code> à l'intérieur de votre document prêt et l'utiliser dans votre exemple de code et cela fonctionnera sans aucune chance de collision. P>

p>

<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="button" class="js-enable-button" value="Enable button -->" data-selector="#button1" />
<input type="button" class="js-enable-me" id="button1" value="Am I working?" /><br/>

<input type="button" class="js-enable-button" value="Enable button -->" data-selector="#button2" />
<input type="button" class="js-enable-me" id="button2" value="Or am I working?" /><br/>
<br/>
<input type="button" class="js-enable-button" value="I enable the three below me using id" data-selector="#id1,#id2,#id3" /></br>
<input type="button" class="js-enable-me" id="id1" value="id1" /><br/>
<input type="button" class="js-enable-me" id="id2" value="id2" /><br/>
<input type="button" class="js-enable-me" id="id3" value="id3" /><br/>
<br/>
<input type="button" class="js-enable-button" value="I enable the three below me using a class" data-selector=".enable" /></br>
<input type="button" class="js-enable-me enable" value="I'm .enable 1" /><br/>
<input type="button" class="js-enable-me enable" value="I'm .enable 2" /><br/>
<input type="button" class="js-enable-me enable" value="I'm .enable 3" /><br/>


3 commentaires

Fonctionne bien pour moi. Mise à jour votre exemple un peu.


J'ai compris ce qui se passe.Lorsque vous cliquez sur un bouton, dit Button2, il attribue 2 à la variable "Index". Mais en même temps, le sélecteur $ ("bouton" [ID ^ = mybutton "+ index +"] "). Cliquez sur (Fonction () {}); Fires.so, les deux sont exécutés en même temps.Je besoin que le deuxième sélecteur exécuter toujours après le premier sélecteur.Vous savez comment puis-je accomplir cela?


J'ai mis à jour ma question.J'ai lu votre réponse et j'ai vu que nous étions divergents sur le nom des boutons.la un look. "Button1" était en fait "MyButton1" et "Button 2" était en réalité "MyButton2". J'ai édité le message d'origine, alors nous pouvons maintenant voir clairement que le "numéro de sélecteur 3" est identique au "sélecteur numéro 1" ou " Sélecteur Numéro 2 ", mais écrit d'une autre manière. Je suis question, ma question est que le même sélecteur, appelé deux fois, dans l'un des appels soit tiré un peu avant l'autre. Est-ce que cela est possible?