jQueryでこのようなことができる場所を見たと思いました
$(".show").on("click", function(){
alert('1st');
}, function() {
alert('2nd');
});
最初のクリックで最初のクリック、2 回目のクリックで 2 回目のクリック、3 回目のクリックで最初のクリックに戻ります。この特定のサンプルが機能しないことはわかっていますが、jQuery でクリック動作を切り替える同様の方法はありますか?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title></title>
<script src="../../Scripts/jquery-1.7.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(document).ready(function () {
$('.show').addClass('OddClick');
$('.show').live('click', function () {
var obj = $(this);
if (obj.hasClass('OddClick') === true) {
obj.addClass('EvenClick').removeClass('OddClick');
alert('1st');
}
else {
obj.addClass('OddClick').removeClass('EvenClick');
alert('2nd');
}
});
});
</script>
</head>
<body>
<div class="show" style="font-size: 25px; font-weight: bolder; cursor: pointer;">
Hello World
</div>
</body>
</html>
あなたはほとんどそこにいます。jQueryのトグル イベントを使用して、この動作を実現できます。これにより、連続するクリックごとに、指定したコールバックが繰り返されます。あなたの場合、これを行うことができます:
$(".show").toggle(function(){
alert('1st');
}, function() {
alert('2nd');
});
必要に応じて、循環するコールバックの任意の数を指定できます
$(".show").toggle(function(){
alert('1st');
}, function() {
alert('2nd');
}, function(){
alert('3rd');
});
このjsFiddle デモ ページで実際の動作を確認できます。