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

Load custom written functions in jQuery after ajax load

本文关键字:加载 函数 ajax jQuery 自定义      更新时间:2023-09-26
$(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'));
    });
});

你好,再次堆叠溢出!

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

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

这样在加载link.html后,直接加载code.txt

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

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

但这似乎也不起作用。

有解决方案吗?

这是因为由于函数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'));
    });
});