jQuery on('toggle') 可行吗?

9

不要使用$('.element').toggle(function(){}, function(){});

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

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

我应该在哪里指定我的切换事件的第二个处理程序函数?

我在这里做了这件事:http://jsfiddle.net/D33f4/,但第一次单击时没有任何反应。 我真的不明白为什么。


可能 [重复](https://dev59.com/_HI95IYBdhLWcg3wvwoQ)。 - Engineer
如果我理解正确,您正在尝试进行开关切换? - KoU_warch
我在这里做了这个:http://jsfiddle.net/D33f4/ 但是第一次点击时没有任何反应。我真的不明白为什么。有什么想法吗? - Vincent
你需要添加文档准备就绪的代码。http://jsfiddle.net/D33f4/1/ - KoU_warch
只是出于好奇,为什么你不能使用现有的 toggle() 函数? - Aleks G
显示剩余3条评论
2个回答

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;
    }
});

在答案中,他指定了不要使用$('.element').toggle(function(){}, function(){}); - KoU_warch
是的,抱歉。我直接进入jsfiddle了。 - MJC
谢谢,我没有理解为什么第一次点击没有任何反应的微妙之处。然而,我非常惊讶没有办法同时使用.toggle和.on。我错了吗? - Vincent
我相信你是正确的。至少我不知道任何委托切换的方法,我会把确认留给某种jquery大师 :) - MJC
如果像这样使用,它将作为旧的.delegate()函数。根据文档,“基于特定的一组根元素,为与选择器匹配的所有元素附加一个或多个事件处理程序,现在或将来。” - MJC
显示剩余2条评论

0

这对我有用。

  $("#chkShowDevices").click(function() {
    console.log($("#chkShowDevices").prop("checked"));
  });

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接