2012-07-20 73 views
6

而不是使用$('.element').toggle(function(){}, function(){});jQuery on('toggle')可能吗?

我需要使用.on()方法我想使用.toggle()的元素,但我无法弄清楚如何指定我的第二个事件处理函数:

$('body').on('toggle', '.element', function(){}); 

我在哪里必须为我的切换事件指定第二个处理函数?

我这样做了:http://jsfiddle.net/D33f4/但是第一次点击没有任何反应。我真的不明白为什么。

+0

可能[duplicate](http://stackoverflow.com/questions/2172614/using-jquery-live-with-toggle-event)。 – Engineer 2012-07-20 12:05:23

+0

如果我正确地得到它,你试图做切换? – 2012-07-20 12:15:41

+0

我在这里这样做了:http://jsfiddle.net/D33f4/但是第一次点击没有任何反应。我真的不明白为什么。任何想法? – Vincent 2012-07-20 12:20:34

回答

6

尝试仅使用切换。

$('#clickme').toggle(
    function(){alert('click 1');}, 
    function(){alert('click 2');} 
); 

就这样,它在第一次点击时不做任何事情,因为它只是在该点附加了事件处理程序。

编辑:

我没有完全阅读这篇文章。我的错。

$('body').on('click', '#clickme', function() 
{ 
    var state = $(this).data('state'); 


    switch(state){ 
     case 1 : 
     case undefined : alert('click 1'); $(this).data('state', 2); break; 
     case 2 : alert('click 2'); $(this).data('state', 1); break; 
    } 
}); 
+0

关于答案,他指定'而不是使用$('。element')。toggle(function(){},function(){});' – 2012-07-20 12:29:25

+0

是的,我的不好。我直奔jsfiddle – 2012-07-20 12:30:49

+0

谢谢,我没有得到为什么在第一次点击中没有发生任何事情的可能性。但是,我很惊讶没有办法使用.toggle和.on在一起。我错了吗? – Vincent 2012-07-20 12:47:12