2012-09-16 127 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