jQuery:如何检测是否未单击元素?

use*_*031 3 jquery jquery-callback jquery-click-event

我想知道是否可以检测是否未点击元素.这是我的代码:

$("#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"); 
        });
    }
});
Run Code Online (Sandbox Code Playgroud)

你会注意到$("myButton的').在(’点击",函数(){检测单击事件.我希望把if-else语句此功能上述内部时不点击状态.不知道如何做这个.

the*_*dox 11

您可以data将该元素的属性维护为单击检测器.

例:

<button class="myButton" data-clicked="no">My Button</button>
Run Code Online (Sandbox Code Playgroud)

在这里,我设置data-clicked=no为初始配置.

click事件中设置data-clickedyes:

$('.myButton').on('click', function() {
  $(this).data('clicked', 'yes');
});
Run Code Online (Sandbox Code Playgroud)

现在检查以下data-clicked属性如下:

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

if( isClicked == 'yes') {
   // do something
} else {
  // do something else
}
Run Code Online (Sandbox Code Playgroud)

  • 设置标志是一个很好的计划.但是你不需要初始的`data-clicked`属性.你可以说`$(this).data('clicked',true)`然后再说`if($(this).data('clicked'))...` (3认同)