使用jQuery跟踪链接点击的问题

时间:2011-03-16 17:09:11

标签: jquery href

我有以下代码:

<a href="http://mydomain.com/link123" class="someClickEvent">Some Link</a>

$(document).ready(function(){  
    $('.someClickEvent').click(function() {
        var $deal_id = 0;
        var $position = 0;  

       var data = {
           deal_id : $deal_id,
           position : $position                                                              
       };        
        $.ajax({
            type : 'POST',
            data: data,
            url : '/ajax/trackBannerClick',
            success : function(data){
                return true;  
            }
        });             
    });
});

并且,似乎在用户发送到新URL之前,click事件没有完成。有没有办法确保在将用户发送到新URL之前完成click事件?我宁愿不使用window.location,因为它不是SEO友好。

3 个答案:

答案 0 :(得分:4)

认为添加async: false可能导致脚本在调用success函数之前等待Ajax完成:

$(document).ready(function(){  
    $('.someClickEvent').click(function() {
        var $deal_id = 0;
        var $position = 0;  

       var data = {
           deal_id : $deal_id,
           position : $position                                                              
       };        
        $.ajax({
            type : 'POST',
            data: data,
            url : '/ajax/trackBannerClick',
            async : false,
            success : function(data){
                return true;  
            }
        });             
    });
});

参考:

答案 1 :(得分:0)

$(document).ready(function(){  
    $('.someClickEvent').click(function(e) {
        e.preventDefault();
        var $deal_id = 0;
        var $position = 0;  
        var data = {
            deal_id : $deal_id,
            position : $position                                                              
    };        
    $.ajax({
        type : 'POST',
        data: data,
        url : '/ajax/trackBannerClick',
        success : function(data){
            window.document.href = $(this).attr('href');
            return true;  
        }
    });            
});

答案 2 :(得分:0)

$(document).ready(function(e){  
    $('.someClickEvent').click(function() {
        var $deal_id = 0;
        var $position = 0;  

        //change 1
        var target=jQuery(e.target).attr('href');
        e.preventDefault()

       var data = {
           deal_id : $deal_id,
           position : $position                                                              
       };        
        $.ajax({
            type : 'POST',
            data: data,
            url : '/ajax/trackBannerClick',
            success : function(data){

                //change2
                window.location=target;
                return true;  
            }
        });             
    });
});