小编pav*_*und的帖子

如何使用jQuery click事件基于JSON查询异步更改href值

我正在使用bit.ly url缩短服务来缩短某些网址被发送到"在twitter上分享"功能.我只想在用户实际按下共享按钮时加载bit.ly url(由于bit.ly的max 5 parallel reqs限制).Bit.ly的REST API使用缩短的url返回JSON回调,这使整个场景异步.

我已尝试以下方法来停止click事件,并等待JSON调用在启动单击之前返回一个值.

我在jQuery(document).ready()中有以下简化代码:

更新的代码(过度简化)!

jQuery("#idofaelement").click(function(event) {
    event.preventDefault(); //stop the click action
    var link = jQuery(this);
    bitlyJSON(function(shortUrl) {
        link.attr("href", function() {
          //process shortUrl
          //return finalized url;                   
        }).unbind().click();
    });
});
Run Code Online (Sandbox Code Playgroud)

并使用以下代码来处理缩短的缩短(工作得很好):

function bitlyJSON(func) {
//
// build apiUrl here
//
jQuery.getJSON(apiUrl, function(data) {
    jQuery.each(data, function(i, entry) {
        if (i == "errorCode") {
            if (entry != "0") {
                func(longUrl);}
        } else if (i == "results") {
            func(entry[longUrl].shortUrl);}
    });
});  
} (jQuery)
Run Code Online (Sandbox Code Playgroud)

href的值已更改,但最终的.click()事件永远不会被触发.这在为href定义静态值时工作正常,但在使用异步JSON方法时则不行.

javascript jquery json href bit.ly

4
推荐指数
1
解决办法
2万
查看次数

标签 统计

bit.ly ×1

href ×1

javascript ×1

jquery ×1

json ×1