Ajax破坏页面上的jQuery脚本 - php

我目前正在一个网站上找到,您可以在这里找到http://steadfastdesignfirm.com/rgw/。我使用了我在CSS-Tricks网上发现的ajax效果来动态加载另一个php页面的内容,并在单击导航选项卡时对其进行动画处理(淡入和淡出)。

如您所见,我已经设法使它正常工作(请注意,只有两个工作页面是“ Home”和“ Experience RGW”),但是,我文档中所有适用于div中元素的jQuery脚本动态生成内容时,重新加载会中断。

作为一个简单的示例,请看一下主页上图像旋转器下方的文本调整大小工具,然后尝试更改字体大小。现在,单击“体验RGW”选项卡,然后再次向下滚动到文本调整大小工具。请注意,既然我们已经在“ #ajax” div中动态加载了experience.php,该脚本将不起作用。另外,如果您现在单击“主页”链接,您还将注意到图像旋转器不起作用。

我在网上和各个论坛上都风风雨雨,试图找出解决方法,我相信我必须合并jQuery .live函数,以将该脚本应用于任何元素,无论当前是否可见。否则,document.ready仅在DOM加载后运行一次脚本,并且不会影响ajax加载的内容。那是对的吗?如果是这样,如何将其应用于在页面上执行的多个jQuery文件?

好吧,这完全让我发疯了,我已经尽力做到了,但是我只是不太明白。我对jQuery相当陌生,但是正在尝试快速学习。我会在这里发布一些代码,但是这个问题涉及很多。 🙂

如果有人愿意提出一个快速答案或几行代码,我将不胜感激。

仅供参考:运行ajax效果的脚本位于./scripts/page.js中。另外,请记住,我目前只有“主页”和“体验RGW”页面可以正常工作,所以请不要浪费时间尝试诊断其他页面上的问题。我还没去找他们。 🙂

这是jsfiddle上一些代码的链接:http://jsfiddle.net/taylortsantles/R33YV/。

谢谢,
泰勒

参考方案

在将元素动态加载到页面后,您需要重新绑定任何事件,因为Javascript认为这些是全新的DOM元素。

您可以通过修改用于更新页面的代码来实现:

    $(window).bind('hashchange', function(){

    newHash = window.location.hash.substring(1);

    if (newHash) {
        $mainContent
            .find("#ajax")
            .fadeOut(200, function() {
                $mainContent.hide().load(newHash + " #ajax", function() {
                    $mainContent.fadeIn(200, function() {
                        $pageWrap.animate({
                            height: baseHeight + $mainContent.height() + "px"
                        });
                    });
                    $("nav li").removeClass("on");
                    $("nav a[href='"+newHash+"']").parent().addClass("on");

                    // Rebind any events
                    documenttextsizer.setup("text-resize");

                });
            });
    };

});

这适用于页面中更新的元素内发生的任何事件。因此,在注释“ //重新绑定任何事件”之后,您可以根据需要添加其他事件!希望有帮助:)

PHP-将日期插入日期时间字段 - php

我已在数据库中使用datetime字段存储日期,使用PHP将“今天的日期”插入该字段的正确方法是什么?干杯, 参考方案 我认为您可以使用php date()函数

PHP-MySQL结果转换为JSON - php

我试图了解如何将MySQL结果转换为JSON格式,以便以后可以在Javascript中使用此JSON来构建HTML表。但是我的代码只是产生大量的空值,我还不明白为什么。$result = mysqli_query($con, "SELECT * FROM Customers"); $test = json_encode($result);…

PHP Count数组元素 - php

嗨,有人可以解释为什么这会返回“数组由0个元素组成”。 :$arr = array(1,3,5); $count = count($arr); if ($count = 0) { echo "An array is empty."; } else { echo "An array has $count elements.…

PHP:从函数返回值并直接回显它? - php

这可能是一个愚蠢的问题,但是……的PHPfunction get_info() { $something = "test"; return $something; } html<div class="test"><?php echo get_info(); ?></div> 有没有办…

PHP:将数据从二维数组复制到一维数组的最快方法 - php

我有一个巨大的二维PHP数组,带有500万行。$t = [ [ "id" => 1, "name" => "foo" ], [ "id" => 2, "name" => "bar" ] ]; 现在,我必须将此数组的I…