jquery更改href并打开新窗口

时间:2012-07-12 13:49:56

标签: jquery ajax

我需要在锚点中更改href,然后在新窗口中打开链接,但此代码不起作用。有任何想法吗?显然,从ajax调用返回的url是正确的。

<a href="http://www.google.com" target="_blank">alink</a>
$(document).ready(function(){

    $('a').on('click', function(e){
         e.preventDefault(); 
         _this = $(this);
         $.ajax({ type:"GET", url:A_URL, dataType:"json",
               success: function(data){                                     
                        var u = data.results[0].trackViewUrl;
                        _this.attr('href', u);                              
                        window.open(u, '_blank');               
               }            
        })
    })

})

2 个答案:

答案 0 :(得分:2)

如果您只想更改网址并在新窗口中打开:

$(document).ready(function () {
    $('a').on('click', function (e) {
        $(this).attr("href", "new Url");
        $(this).attr("target", "_blank");
    })
})

但如果你想通过ajax获取新网址:

$(document).ready(function () {
    $('a').on('click', function (e) {
        var $this = $(this);
        $.ajax({
            url: 'GetUrl',
            async: false,
            success: function (url) {
                $this.attr("href", url);
                $this.attr("target", "_blank");
            },
            error: function () {
                e.preventDefault();
            }
        });
    })

})

答案 1 :(得分:0)

试试这个

$('a').on('click', function(e){
     e.preventDefault(); 
     var me = $(this);

     $.get(
         A_URL,
         {},
         function(data) {
              var u = data.results[0].trackViewUrl;
              me.attr('href', u);                              
              window.open(u, '_blank');      
         },
         'JSON'

     );
})