jQuery-.click()不在.animate回调中工作

jQuery-.click()不在.animate回调中工作,jquery,Jquery,当用户单击链接时,我需要向上滚动到showmaildiv,然后触发单击事件以打开电子邮件数据。这项工作: $(".showemaillink").click(function(e) { e.preventDefault(); var emailid = $(this).attr('data-emailid'); var emaildiv = $(".showemaildiv[data-id='" + emailid + "']");

当用户单击链接时,我需要向上滚动到
showmaildiv
,然后触发单击事件以打开电子邮件数据。这项工作:

$(".showemaillink").click(function(e) {
        e.preventDefault();
        var emailid = $(this).attr('data-emailid');
        var emaildiv = $(".showemaildiv[data-id='" + emailid + "']");

        $('html, body').animate({
            scrollTop: emaildiv.offset().top
        }, 500);

        emaildiv.click();
    });
但是为了让它更好一点,我希望电子邮件在动画之后扩展,所以我使用回调。但是,在这种情况下,
emaildiv.click()
不起作用,尽管
警报是-这里出了什么问题

 $(".showemaillink").click(function(e) {
        e.preventDefault();
        var emailid = $(this).attr('data-emailid');
        var emaildiv = $(".showemaildiv[data-id='" + emailid + "']");

        $('html, body').animate({
            scrollTop: emaildiv.offset().top
        }, 500, function(){
                emaildiv.click();
                alert('callback fired');
            }
        );
    });

你的代码是正常的和工作的(我已经试过了)。 但是回调函数可能有问题——它会被调用两次,对于正在制作动画的每个元素——第一次调用html,第二次调用body

您可以在此处阅读更多信息:


如果您的
emaildiv
click事件中有一些操作否定了以前的操作(如切换),那么它看起来不起作用。

是的-您是对的,我应该意识到这两个回调在单击我的
emaildiv
两次-一次打开,一次关闭!!链接中的代码修复了此问题:)