Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/388.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 在PJAX页面加载后,即使不触发锚定单击_Javascript_Web_Pjax - Fatal编程技术网

Javascript 在PJAX页面加载后,即使不触发锚定单击

Javascript 在PJAX页面加载后,即使不触发锚定单击,javascript,web,pjax,Javascript,Web,Pjax,我有一个非常奇怪的问题,我正在混乱的网站,我不能把我的头围绕什么可能会出错。我在网站上使用PJAX,我的正文中有一个id为#page contents的div 我用来设置PJAX的代码如下 <script type="text/javascript"> $(function(){ $(document).pjax('a', '#page-contents', { fragment: '#page-contents',

我有一个非常奇怪的问题,我正在混乱的网站,我不能把我的头围绕什么可能会出错。我在网站上使用PJAX,我的正文中有一个id为
#page contents
的div

我用来设置PJAX的代码如下

<script type="text/javascript">
    $(function(){
        $(document).pjax('a', '#page-contents', {
            fragment: '#page-contents',
            timeout: 2000
        });
    });
</script>
这适用于导航栏中的所有链接,但我发现
#page contents
div中的任何链接都不会触发上述脚本。我知道,随着页面的更改和我插入的警报的显示,PJAX仍在工作

我在自己的测试中发现了一些东西:

  • 我还发现,如果我直接加载一个包含非导航栏链接的地址,然后单击该链接,它就会工作。但是通过pjax重新加载返回该页面,然后单击链接不会触发我的事件
  • 将一个测试类添加到我的一个锚点,然后将某个事件与该类关联,也会遇到同样的问题
有人知道为什么我的脚本无法执行吗?或者我只是错过了一些明显的东西

提前谢谢你

注:这个网站是我的个人网站,链接是,我第一次注意到这个页面是我的。(您将清楚地看到,该网站正在进行中。)如前所述,直接转到“关于”页面并单击链接将起作用,但如果您导航到“关于”页面,然后尝试单击页面中的链接,则不会起作用。

-

我有一个类似的问题,我知道如何解决这个问题;此脚本未绑定到新元素,因为新元素加载后不会重新运行该脚本

请将函数放入外部.js文件中。完成后,您可以将此脚本添加到标题:

$(document).on('pjax:complete', function() {
            $.ajaxSetup({ cache: true});
            $.getScript("YOUR SCRIPT FILE PATH HERE', true);?>");                           
            });
您必须为任何其他javascript/jQuery添加更多的
$.getScript
调用,以便启用要发生的事件。(示例:您可能需要重新加载jQuery)

这将把jquery和javascript重新应用于通过PJAX加载的新元素

*需要注意的一点是:如果您正在使用twitter引导,请不要使用
$.getScript
重新调用引导脚本,因为它会在每次重新加载时自动取消

$(document).on('pjax:complete', function() {
            $.ajaxSetup({ cache: true});
            $.getScript("YOUR SCRIPT FILE PATH HERE', true);?>");                           
            });