jQuery: как определить, что элемент не нажат?

Я хотел бы знать, можно ли определить, не нажат ли элемент. Это код, который у меня есть:

$("#mpElement").myFeature({
            .........
            .........
            .........
    afterDo: function() {
        // This if-else statement has to go inside "when not clicked" condition. 
        // Not sure how to do this...
        if($(".myButton").last().hasClass("selected")) {
            $(".myButton").first().addClass("selected");
            $(".myButton").last().removeClass("selected");
        } else {
            $(".selected").removeClass("selected").next().addClass("selected");
        }
        $(".myButton").on("click", function(){
            $(".myButton").removeClass("selected");
            $(this).closest(".myButton").addClass("selected"); 
        });
    }
});

Вы заметите $(".myButton").on("click", function(){ для обнаружения события клика. Я хотел бы поместить операторы if-else над этой функцией внутри когда не нажали условие. Не знаю, как это сделать.


person user1448031    schedule 16.09.2012    source источник
comment
определить, если элемент не был нажат. Вы имеете в виду проверить, не был ли нажат элемент? Или не было нажато после какого-то другого события? Ни один пользователь не подумал о том, чтобы щелкнуть мышью, но затем передумал...   -  person nnnnnn    schedule 16.09.2012


Ответы (1)


Вы можете сохранить свойство data для этого элемента в качестве детектора кликов.

Пример:

<button class="myButton" data-clicked="no">My Button</button>

Здесь я установил data-clicked=no в качестве начальной конфигурации.

В событии click установите data-clicked на yes, например:

$('.myButton').on('click', function() {
  $(this).data('clicked', 'yes');
});

Теперь проверьте это свойство data-clicked, как показано ниже:

var isClicked = $('.myButton').data('clicked');

if( isClicked == 'yes') {
   // do something
} else {
  // do something else
}
person thecodeparadox    schedule 16.09.2012
comment
Установка флага — хороший план. Но вам не нужен начальный атрибут data-clicked. Вы можете просто сказать $(this).data('clicked',true), а потом if ($(this).data('clicked'))... - person nnnnnn; 16.09.2012
comment
Это не создает фактический атрибут data-clicked. Если вам нужно создать атрибут, используйте .attr(): $(this).attr('data-clicked', 'true'); - person Alen Simonyan; 15.01.2020