Как сделать "Если щелкнуло остальное .." - PullRequest
14 голосов
/ 08 июля 2011

Я пытаюсь использовать jQuery, чтобы сделать что-то вроде

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

Но я не уверен, как это сделать с помощью jQuery? Любая помощь будет принята с благодарностью.

Редактировать: Я пытаюсь запустить функцию, если нажата #id и, в частности, она не нажата, а затем запустить функцию 2? мне нужно сначала проверить, что #id был нажат до запуска function2?

Ответы [ 8 ]

29 голосов
/ 08 июля 2011

Вы должны избегать использования глобальных переменных и предпочитать использовать .data()

Итак, вы должны сделать:

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

Затем, чтобы проверить, нажали ли они, и выполнить действие:

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

Надеюсь, это поможет.Приветствия

8 голосов
/ 08 июля 2011

Способ сделать это будет с логическим значением с более высокой областью действия:

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

if (hasBeenClicked) {
    // The link has been clicked.
} else {
    // The link has not been clicked.
}
2 голосов
/ 08 июля 2011
 var flag = 0;

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

 if (flag == 1)
 {
  alert("Clicked");
 }
 else
 {
   alert("Not clicked");
 }
2 голосов
/ 08 июля 2011

Клик - это событие; Вы не можете запросить элемент и спросить его, нажимается ли на него или нет. Как насчет этого:

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

Тогда, если вы действительно хотите, вы можете просто создать цикл, который выполняется каждые несколько секунд с вашим // run function..

0 голосов
/ 25 февраля 2019

если вы нажмете x, x количество раз, вы получите деление флажка на y, что приведет к jcheery boxcheck, что будет недопустимым способом сделать подобные вещи.Я надеюсь, что вы ознакомитесь с этим перед использованием функций .on ()

0 голосов
/ 08 июля 2011

Может быть, вы ищете что-то вроде этого:

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

jsfiddle

Вы можете получить указатель на элемент, по которому щелкнули, используя event.srcElement.

Итак, все, что вам нужно сделать, это проверить атрибут id выбранного элемента.

0 голосов
/ 08 июля 2011

Вы на самом деле можете подразумевать наведение элемента, не щелкая, верно?

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

Уточни свой вопрос, тогда мы сможем лучше понять.

Просто, если на элемент не нажимают, выполните setInterval, чтобы продолжить процесс до щелчка.

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 голосов
/ 08 июля 2011

Это все, что вам нужно: http://api.jquery.com/click/

Наличие «else» не применимо в этом сценарии, иначе будет означать «not click», в этом случае вы просто ничего не сделаете.

...