jquery - 使用带有切换事件的 jQuery .live

标签 jquery

我的代码正在工作,但需要我单击两次才能激活我的链接(一次用于单击事件,一次用于切换事件。)我该怎么做才能做到这一点,这样我只需单击一次,以便切换会自动发生吗?

    //Show or Hide Comments
$('#showHideComments').live('click', function() {
    $('#showHideComments').toggle(function() {
        $(".commentsSwitch").animate({"marginLeft": "+=53px"}, 500);
        $("#comments").fadeIn(300);
        $("#addComment").fadeIn(300);
    },function(){
        $(".commentsSwitch").animate({"marginLeft": "-=53px"}, 500);
        $("#comments").fadeOut(300);
        $("#addComment").fadeOut(300);
    });
});

谢谢!

最佳答案

您不能同时使用livetoggle。你能做的就是简单地制作你自己的“切换”:

$('#showHideComments').live('click', function() {
    if($("#addComment").is(':visible')){
      $(".commentsSwitch").animate({"marginLeft": "-=53px"}, 500);
      $("#comments, #addComment").fadeOut(300);
    } else {
      $(".commentsSwitch").animate({"marginLeft": "+=53px"}, 500);
      $("#comments, #addComment").fadeIn(300);
    };
});

live 绑定(bind)到 click,但是,当调用 toggle 时,它也(通常)在单击时绑定(bind)。您应该决定“生活”是否真的是您所需要的。例如,如果在页面使用过程中通过AJAX替换#showHideComments对象,那么您需要live和我的解决方案。但是,如果它没有被换出并保持不变,只需使用原始 live 函数的内部(只需切换代码)即可。

关于jquery - 使用带有切换事件的 jQuery .live,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2172614/

相关文章:

javascript - 非 Flash 翻页书 [跨浏览器]

javascript - 从事件类中获取值并假设为另一个

jquery - 如何使用jquery改变文本框的背景颜色3秒?

javascript - 在 jquery 中掉落后更改掉落元素和限制元素的颜色

php - jQuery 自定义模板无法正常工作

javascript - 使用 JS 从 html 和 DOM 中删除脚本标签

javascript - 用于渲染完成的花式树事件

javascript - 删除只出现在 DOM 检查器中的空引号

javascript - 在 jQuery 的帮助下防止用户进入 ".next"

javascript - 为什么我的ajax成功数据没有显示在Angular JS中