如何使用jQuery加载动态内容?

时间:2011-01-22 23:59:04

标签: javascript jquery html dynamic load

我正在关注“How to Load In and Animate Content with jQuery”并且一切正常,但如果我在加载的<div/>中有其他链接,则脚本无效。任何人都可以在以下代码中发现错误吗?

 $(document).ready(function() {

    var hash = window.location.hash.substr(1);
    var href = $('.nav li a').each(function(){
        var href = $(this).attr('href');
        if(hash==href.substr(0,href.length-5)){
            var toLoad = hash+'.html #content';
            $('#content').load(toLoad)
        }                                           
    });

    $('.nav li a').click(function(){

        var toLoad = $(this).attr('href')+' #content';
        $('#content').hide('fast',loadContent);
        $('#load').remove();
        $('#wrapper').append('<span id="load">LOADING...</span>');
        $('#load').fadeIn('normal');
        window.location.hash = $(this).attr('href').substr(0,$(this).attr('href').length-5);
        function loadContent() {
            $('#content').load(toLoad,'',showNewContent())
        }
        function showNewContent() {
            $('#content').show('normal',hideLoader());
        }
        function hideLoader() {
            $('#load').fadeOut('normal');
        }
        return false;

    });

});

我的情景

  • 从网站索引开始
  • 点击“联系”
  • 已加载“内容div”
  • 在联系人内容div中我有其他链接'map.html'我想在其他地方打开它,只有'content div'loading - &gt;并且它不起作用 - 网站正常加载

1 个答案:

答案 0 :(得分:0)

如果您正在讨论的内容中的链接是.nav li a链接,那么此处的问题是.click事件仅分配一次(在文档已准备好)并且不会影响加载的内容< em>在 documentready之后。

所以最简单的方法是将$('.nav li a').click(function(){更改为

$('.nav li a').on('click', function(){

使用此功能,事件处理程序也将附加到稍后加载的内容中。


注意:根据您的jQuery版本,您可能需要针对此 .live 行为使用不同的方法:

$(selector).live(events, data, handler);                // jQuery 1.3+
$(document).delegate(selector, events, data, handler);  // jQuery 1.4.3+
$(document).on(events, selector, data, handler);        // jQuery 1.7+