2012-04-11 94 views
1

我正在尝试使用jQuery切换在两个函数之间切换。迄今为止的结果是不完整的。以下是试用场景的完整代码。jQuery功能之间切换 - 执行零,一,二,三...次

<html> 
<head> 
    <script type="text/javascript" src="../js/jquery.js"></script> 
    <script> 
    $(document).ready(function(){ 
    $('#id').on('click',function(event){ 
     $(this).toggle(
      function(){console.log('Hide');}, 
      function(){console.log('Show');} 
     ); 
    }); 
    }); 
    </script> 
</head> 

<body> 
    <div id="id">Hello</div> 
</body> 
</html> 

因此,当我第一次点击“Hello”时,日志中没有任何内容出现。

[Nothing] 

在第二次点击,我得到:

Hide 

在第三,它增加了:

Show 
Hide 

在第四,它增加了:

Hide 
Show 
Hide 

第五,它增加了:

Show 
Hide 
Show 
Hide 

我相信你可以看到模式:)为什么这样做?我用.stop(true)进行了实验,但无济于事。

谢谢。

回答

4

toggle()单击时执行,因此您不需要事件包装器click

$('#id').toggle(
     function(){console.log('Hide');}, 
     function(){console.log('Show');} 
    ); 

您当前的代码将toggle()click事件触发第一次被点击,这就是为什么你没有得到任何东西你第一次点击的元素。

+0

美丽!点击是在开始使用切换之前尝试不同的东西的遗产。除去点击包装解决了这个问题,只要我想要的点击发生在两个切换函数内(这可能涉及一点点重复)。或者我想我可以使用.toggle(...)。('click',...),不是吗? – Nick 2012-04-11 02:15:38

+0

@Nick很开心,悉尼开发者! – alex 2012-04-11 02:16:30

+0

@Nick你可以像这样链接'toggle()'和'on(),每次点击都会触发'on()'。 – alex 2012-04-11 02:23:40