-2

我以为我在某个地方看到了你可以在 jQuery 中做这样的事情

$(".show").on("click", function(){
  alert('1st');
}, function() {
  alert('2nd');
});

第一次点击将调用第一次,第二次点击第二次,第三次返回第一次。我知道这个特定的示例不起作用,但是有没有类似的方法来切换 jQuery 中的单击行为?

4

2 回答 2

0
<!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>
于 2012-04-28T08:46:47.133 回答
0

您快到了。您可以使用jQuery中的切换事件来实现此行为。它将导致每次连续单击循环通过您提供的回调。在您的情况下,您可以这样做:

$(".show").toggle(function(){ 
  alert('1st'); 
}, function() { 
  alert('2nd'); 
});

如果您愿意,可以提供任意数量的回调以循环使用

$(".show").toggle(function(){ 
  alert('1st'); 
}, function() { 
  alert('2nd'); 
}, function(){
  alert('3rd');
}); 

您可以在这个jsFiddle 演示页面上看到这一点。

于 2012-04-29T14:15:51.980 回答