【问题标题】:Jquery plugins won't work in dynamically loaded htmlJquery 插件在动态加载的 html 中不起作用
【发布时间】:2011-03-30 10:11:37
【问题描述】:

我得到了这个代码来动态加载 html 但我遇到了一个问题,因为我的插件在 index.html 上工作正常,但是当你更改页面时它不再工作..谁能帮助我?谢谢

$(函数() {

var newHash      = "",
    $mainContent = $("#main-content"),
    $pageWrap    = $("#page-wrap"),
    baseHeight   = 0,
    $el;


$("nav").delegate("a", "click", function() {
    window.location.hash = $(this).attr("href");
    return false;
});

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

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

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


    };

});

$(window).trigger('hashchange');

});

【问题讨论】:

  • 'load(newHash + " #guts"' 是怎么回事?为什么里面有 #guts?
  • 你的 DOM 样本也会有所帮助。
  • 加载的页面上的插件不起作用..例如,我正在加载一个使用灯箱插件显示视频的页面,但插件不会做它的事情。 #guts 是基本上加载内容的 div。

标签: javascript jquery html dynamic loaded


【解决方案1】:

如果您想将 jQuery 附加到动态创建的标记,我认为您需要的是 .live()。

http://api.jquery.com/live/

【讨论】:

  • 是的,这听起来像是解决方案,但是当我尝试用 .live() 替换 .bind() 时,没有任何效果了..
猜你喜欢
  • 1970-01-01
  • 2023-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多