web-dev-qa-db-fra.com

Comment faire "Si on clique ailleurs .."

J'essaie d'utiliser jQuery pour faire quelque chose comme

if(jQuery('#id').click) {
    //do-some-stuff
} else {
    //run function2
}

Mais je ne sais pas comment faire cela en utilisant jQuery? Toute aide serait grandement appréciée.

Edit: J'essaie d'exécuter une fonction si le #id a été cliqué et en particulier il n'a pas été cliqué alors exécuter la fonction 2? c'est-à-dire que je dois d'abord vérifier que le #id a été cliqué avant d'exécuter function2?

14
Tom

Vous devez éviter d'utiliser des variables globales et préférez utiliser .data()

Donc, vous feriez:

jQuery('#id').click(function(){
  $(this).data('clicked', true);
});

Ensuite, pour vérifier s'il a été cliqué et effectuer une action:

if(jQuery('#id').data('clicked')) {
    //clicked element, do-some-stuff
} else {
    //run function2
}

J'espère que cela t'aides. À votre santé

29

La façon de le faire serait avec un booléen à une portée plus élevée:

var hasBeenClicked = false;
jQuery('#id').click(function () {
    hasBeenClicked = true;
});

if (hasBeenClicked) {
    // The link has been clicked.
} else {
    // The link has not been clicked.
}
9
James Long
 var flag = 0;

 $('#target').click(function() {
    flag = 1;
 });

 if (flag == 1)
 {
  alert("Clicked");
 }
 else
 {
   alert("Not clicked");
 }
2
Rajeev

Un clic est un événement; vous ne pouvez pas interroger un élément et lui demander s'il est cliqué ou non. Que dis-tu de ça:

jQuery('#id').click(function () {
   // do some stuff
});

Ensuite, si vous le vouliez vraiment, vous pourriez simplement avoir une boucle qui s'exécute toutes les quelques secondes avec votre // run function..

2
therin

Peut-être que vous cherchez quelque chose comme ça:

$(document).click(function(e)
   {
       if($(e.srcElement).attr('id')=='id')
       {
           alert('click on #id');
       }
       else
       {
            alert('click on something else'); 
       }
   });

jsfiddle

Vous pouvez récupérer un pointeur sur l'élément cliqué en utilisant event.srcElement.

Il vous suffit donc de vérifier l'attribut id de l'élément cliqué.

0
Dr.Molle

si vous appuyez sur x, x nombre de fois, vous obtiendrez la division de la case à cocher par y, ce qui se traduira par une case à cocher jquery qui serait une manière non valide de faire ce genre de chose. J'espère que vous y jeterez un œil avant d'utiliser les fonctions .on ()

0
Freezingden

C'est tout ce dont vous avez besoin: http://api.jquery.com/click/

Avoir un "autre" ne s'applique pas dans ce scénario, sinon cela signifierait "n'a pas cliqué", auquel cas vous ne feriez rien.

0
citizen conn

Vous pouvez en fait vouloir survoler l'élément en ne cliquant pas, non?

jQuery('#id').click(function()
{
    // execute on click
}).hover(function()
{
    // execute on hover
});

Clarifiez votre question, nous pourrons alors mieux comprendre.

Simplement si un élément n'est pas cliqué, faites un setInterval pour continuer le processus jusqu'à ce que vous cliquiez.

var checkClick = setInterval(function()
{
    // do something when the element hasn't been clicked yet
}, 2000); // every 2 seconds

jQuery('#id').click(function()
{
    clearInterval(checkClick); // this is optional, but it will
                               // clear the interval once the element
                               // has been clicked on

    // do something else
})
0
MacMac