0

アンカーの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');               
               }            
        })
    })

})
4

2 に答える 2

3

URLのみを変更して新しいウィンドウで開く場合:

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

ただし、ajax で新しい URL を取得する場合:

$(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();
            }
        });
    })

})
于 2012-07-12T13:59:39.340 に答える
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'

     );
})
于 2012-07-12T13:55:02.590 に答える