php - 切换内容时 jQuery .load 问题

标签 php javascript jquery html ajax

Tristann.tk 在本站点击关于我,然后点击返回首页,然后尝试在底部切换页面,没有变化。为什么?

jQuery 代码:

$(document).ready(function(){
    $(".page_links .page li").click(function(){
        $(".page_links .page li").css({'background-color' : ''});
        $(this).css({'background-color' : '#A5CDFA'});
        $(".posts").load("/includes/data.php?data=pages&page=" + this.className);
    });
    $(".navlist #about_me").click(function(){
        $(".navlist #home").css({'text-decoration' : 'none'});
        $(".navlist #about_me").css({'text-decoration' : 'underline'});
        $(".vsebina").load("/includes/data.php?data=about_me");
    });
    $(".navlist #home").click(function(){
        $(".navlist #about_me").css({'text-decoration' : 'none'});
        $(".navlist #home").css({'text-decoration' : 'underline'});
        $(".vsebina").load("/includes/data.php?data=home");
    });
    $(".navlist #home").css({'text-decoration' : 'underline'});
    $(".1").css({'background-color' : '#A5CDFA'});
});

div 是这样的:

<div class="zunanji">
    <div class="glava">
        <div class="meni">
            <ul class="navlist">
                <li><a id="home" href="javascript:void(0)">Home</a></li>
                <li><a id="about_me" href="javascript:void(0)">About Me</a></li>
            </ul>
        </div>
    </div>
    <div class="container">
        <div class="vsebina">
        <? get_posts();
           get_pages();
        ?>
        </div>
        <div class="stranska">
            <h2>Archive</h2>
        </div>
    </div>
</div>

这 2 个 PHP 函数返回开头的 5 个帖子和底部的页码。

最佳答案

您需要在每次 load 后重新绑定(bind)这些事件,因为 page_link 正在被替换。一种更简单、更简洁的方法是使用事件委托(delegate)。最好的方法是使用 $.fn.on ,它比 $.fn.live 表现更好,错误更少。此外,由于 load 将替换 page_links,因此您必须在回调中执行 background-color 操作:

$(".vsebina").on('click', '.page_links .page li', function(){
    var $page = $(this); // save the page link that was clicked
    var path = "/includes/data.php?data=pages&page=" + this.className;

    $(".posts").load(path, function(){
        $(".page_links .page li").css({'background-color' : ''});
        $page.css({'background-color' : '#A5CDFA'});            
    });
});

这会将点击事件绑定(bind)到 .vsebina 容器并检查点击的项目是否是页面链接。如果是,它将解雇您的处理程序。这样,即使内容被替换,您的处理程序也会运行。

Read more about $.fn.on vs $.fn.live vs $.fn.delegate vs $.fn.bind here

关于php - 切换内容时 jQuery .load 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13572827/

相关文章:

php - 在 Codeigniter 中更新数组查询

php - Symfony 1.4 通过 SSL 连接到 mysql

javascript - 将记录添加到数据库时更新转发器

用于验证电话号码的 Javascript 正则表达式

javascript - 检测文件上传是通过拖动还是常规输入点击

jquery - 如何在 Listview 输入标签中创建一个按钮

php - 定期执行 PHP 脚本的最佳方式?

php - 显示来自sql查询的数组信息

jquery - 使用 jQuery 将光标位置处的文本插入到 CKEditor

javascript - 对于每个元素,onclick 更改值