2012-09-16 94 views
3

我想知道是否有可能检测一个元素是否被点击。这是我的代码: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的‘)上(’点击”,函数(){检测单击事件,我想就把如果。里面这个功能上面-else报表时不点击条件不知道如何做到这一点

+0

_ “检测如果一个元素没有点击” _ - 你的意思测试一个元素是否从未被点击过?或者自从其他事件以来没有被点击过?有没有“用户思考点击,但后来改变了主意”事件... – nnnnnn

回答

11

可以保持data属性设置为元素作为点击探测器

例如:。

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

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

click事件设置data-clickedyes像:

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

现在检查这个data-clicked属性象下面这样:

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

if(isClicked == 'yes') { 
    // do something 
} else { 
    // do something else 
} 
+3

设置一个标志是一个很好的计划。但是你不需要最初的'data-clicked'属性。你可以说'$(this).data('clicked',true)'然后'如果($(this).data('clicked'))...' – nnnnnn

+0

@nnnnnn是的,谢谢先生。 – thecodeparadox