在ajax加载后在jQuery中加载自定义编写的函数

时间:2013-10-19 14:46:42

标签: javascript jquery function

$(document).ready(function(){
    function loadURL(url){
        $('#ajax').load(url, function(){
            history.pushState('', 'My Website', baseurl + url);
        });
    }

    $(document).on('click', 'a[rel!=external]', function(event){
        event.preventDefault(); 
        loadURL($(this).attr('href'));

    });
});

再次问好stackoverflow!

我有一些内容是我通过AJAX加载的。现在我要加载link.html,其中包含这段代码:

<script>
    loadURL('code.txt');
</script>

以便加载link.html后,它会直接加载code.txt

可悲的是,调用在$(document).ready()中创建的函数似乎不起作用,因为它由于某种原因未定义。所以我试过

<script>
    $(document).ready(function(){
        loadURL('code.txt');
    });
</script>

但这似乎也没有用。

有解决方法吗?

1 个答案:

答案 0 :(得分:0)

这是因为函数loadURL在另一个函数内声明,声明的函数对容器函数是私有的。

解决方案是将它声明为全局函数,因为您也希望从其他上下文调用该函数。它不会产生与dom ready状态相关的问题,因为函数是在dom ready回调中调用的。

function loadURL(url){
    $('#ajax').load(url, function(){
        history.pushState('', 'My Website', baseurl + url);
    });
}
$(document).ready(function(){
    $(document).on('click', 'a[rel!=external]', function(event){
        event.preventDefault(); 
        loadURL($(this).attr('href'));

    });
});