首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >点击事件时使用承诺成功

点击事件时使用承诺成功
EN

Stack Overflow用户
提问于 2016-05-11 07:47:07
回答 1查看 2K关注 0票数 1

在单击方法上,异步$.post值的返回值有问题。

我的网页上有几个句子,我想用ajax调用来翻译。我不想让它异步,所以请不要建议它。当一个页面加载时,会有4-5个或更多的句子,我希望它能够“动态”地翻译它们。

最后,我找到了一个解决方案,如何使用来自异步调用的返回值,但是我想,因为它是异步的,这就是为什么我的e.preventDefault()没有触发。

从这一点上,我不知道,我怎么能解决它。

代码语言:javascript
复制
$.translate = function (string) {
    return $.post(getBaseUrl() + 'ajax.php', {action: 'translate', text: string}, function () {});
};

$('td.operations a.remove').click(function (e) {
    var promise = $.translate('Do you really want to hurt me?');
    promise.success(function(data){
        console.log(e);
        if (!confirm(data)) {
            e.preventDefault();
        }
    });
});

e是一个单击事件,没关系。有人能帮我吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-11 07:59:21

您可以随时逆转逻辑并防止默认行为,因为锚单击并在需要时调用本机单击DOM方法,例如:

代码语言:javascript
复制
$('td.operations a.remove').click(function (e) {
    e.preventDefault();
    var $self = $(this); // keep ref using closure (or you could bind it to promise callback)
    var promise = $.translate('Do you really want to hurt me?');
    promise.done(function(data){
        if (confirm(data)) {
            $self.off('click').get(0).click(); // call native click method
        }
    });
});

不建议使用延迟对象的success方法,而是使用done

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37156233

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档