在加载JavaScript之前阻止单击

时间:2013-05-26 14:36:59

标签: jquery preventdefault document-ready

我的jQuery函数存在问题:

        /* Vertical Profil Navigation */    
    $(document).ready(function() {
        function ajaxLoading(obj){
            var dataString = obj.attr('href');

            if(obj.attr('rel') != '#default'){
                $.ajax({
                    type: "GET",
                    url: "profile.php",
                    beforeSend: function() { $("#countrydivcontainer").html('<h2 class="title">Loading</h2><div style="text-align:center;"><img src="images/loader.gif" /></div>'); },
                    data: dataString,
                    success: function(data){
                        $("#countrydivcontainer").html(data);
                    }
                });
            }
        }

        $('.vnav-item.profile').on('click', function(e){
            ajaxLoading($(this));
            e.preventDefault();
        }); 
    });

当我加载页面并在加载完整站点之前单击链接时,不会阻止链接事件,并且我收到错误。如果站点未完全加载,我怎样才能确保始终阻止点击这些链接?

Visit site

1 个答案:

答案 0 :(得分:0)

将JavaScript片段放在标签中有问题的链接之后,并省略$(document).ready handler

这会导致代码在链接呈现到屏幕后立即执行

e.g。

<a href="..." class="vnav-item profile">Here</a>
<script>
    $('.vnav-item.profile').on('click', function(e){
        ajaxLoading($(this));
        e.preventDefault();
    });
</script>

(当然,jQuery必须包含在此之前的某处)