jQuery проверяет, нажата она или нет

#jquery

#jquery

Вопрос:

 $( element ).click( function() {

});
  

Как я могу проверить, нажат элемент или нет? Я делаю вот так

 function element() {
    $( "#element" ).click( function() {
        return 0;
    } );
}
if( element() == 0 ) {
    alert( "yes" );
} else {
    alert( "no" );
}
  

Но это ничего не возвращает.

Комментарии:

1. Вы не можете return из обработчика событий. Пожалуйста, опишите реальную проблему, которую вы пытаетесь решить. Когда именно вы хотите проверить, был ли нажат элемент или нет?

2. У меня есть две функции, и я хочу запустить вторую функцию на основе события click, если первая функция возвращает 0, это означает, что нажмите, чтобы запустить вторую функцию, а если нет, чтобы запустить ее, но с другими параметрами

3. Итак, вы в основном хотите вызвать функцию при первом нажатии и ту же функцию с разными параметрами при втором (и последующих) нажатии (ах)?

4. На самом деле нет, я хочу посмотреть, нажата ли она, чтобы я мог внести дополнительную логику .. поэтому, если она нажата, чтобы запустить функцию с одними параметрами, а если нет, то с другими. Феликс, ваш код работает, но он работает только тогда, когда логика заключается в щелчке, а мне это не нужно

5. @gamb: Ну, вам не обязательно проводить тестирование внутри обработчика щелчков. Вы можете делать это снаружи, когда / где захотите.

Ответ №1:

Вы могли бы использовать .data() :

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

а затем проверьте это с помощью:

 if($('#element').data('clicked')) {
    alert('yes');
}
  

Чтобы получить лучший ответ, вам необходимо предоставить больше информации.

Обновить:

Основываясь на вашем комментарии, я понимаю, что вы хотите что-то вроде:

 $("#element").click(function(){
    var $this = $(this);
    if($this.data('clicked')) {
        func(some, other, parameters);
    }
    else {
        $this.data('clicked', true);
        func(some, parameter);
    }
});
  

Комментарии:

1. Да, после множества изменений в моем коде я сделал это, это было похоже на tnx для всех, и проверка предназначена для u.

2. Что, если элемент имеет две кнопки? Значит, те же идентификаторы, но разные классы?

3. @JohnSmith: не уверен, что ты имеешь в виду. Не имеет значения, ко скольким элементам привязан обработчик. Он всегда работает с выбранным элементом.

Ответ №2:

Используя jQuery, я бы предложил более короткое решение.

 var elementClicked;
$("element").click(function(){
   elementClicked = true;
});
if( elementClicked != true ) {
    alert("element not clicked");
}else{
    alert("element clicked");
}
  

(«элемент» здесь должен быть заменен фактическим тегом name)

Ответ №3:

 <script>
    var listh = document.getElementById( 'list-home-list' );
    var hb = document.getElementsByTagName('hb');
    $("#list-home-list").click(function(){
    $(this).style.color = '#2C2E33';
    hb.style.color = 'white';
    });
</script>
  

Комментарии:

1. Вы должны объяснить, что делает ваш фрагмент кода. И далее, будет лучше, если вы подтолкнете пользователя к правильному решению, если решение простое, вместо того, чтобы публиковать решение как оно есть.

Ответ №4:

     <script type="text/javascript" src="jquery-1.6.1.min.js"></script>
<script type="text/javascript">
var val;
        $(document).ready(function () {
            $("#click").click(function () {
                val = 1;
                get();
                });
                });
          function get(){
            if (val == 1){
                alert(val);
                }

          }
</script>
    <table>
    <tr><td id='click'>ravi</td></tr>
    </table>
  

Комментарии:

1. Выполняйте любую логику, которую вы хотите, в обработчике щелчков.

Ответ №5:

Хорошо, прежде чем я перейду к решению, давайте остановимся на одном факте: Javascript основан на событиях. Поэтому вам обычно приходится настраивать обратные вызовы, чтобы иметь возможность выполнять процедуры.

Основываясь на вашем комментарии, я предположил, что у вас есть триггер, который будет выполнять логику, которая запускает функцию, в зависимости от того, нажат элемент или нет; для демонстрации я сделал это «кнопкой отправки»; но это может быть таймер или что-то еще.

 var the_action = function(type) {
    switch(type) {
        case 'a':
            console.log('Case A');
            break;
         case 'b':
            console.log('Case B');
            break;
    }
};

$('.clickme').click(function() { 
    console.log('Clicked');
    $(this).data('clicked', true);
});

$('.submit').click(function() {
    // All your logic can go here if you want.
    if($('.clickme').data('clicked') == true) {
        the_action('a');
    } else {
        the_action('b');
    }
});
  

Живой пример: http://jsfiddle.net/kuroir/6MCVJ /

Ответ №6:

Это то, что я пробовал, и у меня это работает довольно хорошо

 $('.mybutton').on('click', function() {
       if (!$(this).data('clicked')) {
           //do your stuff here if the button is not clicked
           $(this).data('clicked', true);
       } else {
           //do your stuff here if the button is clicked
           $(this).data('clicked', false);
       }

   });
  

для получения дополнительной информации проверьте эту ссылку
jQuery переключает щелчок