div重新加载后jQuery无法正常工作

时间:2016-01-21 16:55:39

标签: javascript php jquery html ajax

也许有人可以帮我解决以下问题。 问题是我正在尝试添加新相册(使用jQuery)并在添加后显示新专辑我正在使用jQuery .load函数重新加载DIV

$($classid).load('..')

一切都运行正常,除了重装文件夹悬停后的功能(带按钮的栏出现 - 删除,等等......悬停)只是不起作用。 看起来像DIV重新加载jquery后,它需要被再次调用以运行所有函数。

我试图添加此代码

<script>
            $.getScript("/data/sys.js" ); // item hovering functions styling etc..
            $.getScript("/data/late.js" ); //for button clicks 
</script>

重装DIV'S内容.. 一切都运行正常,但是当我尝试在下一个专辑中添加新相册时添加它会增加文件夹数量..所以当我添加一个显示的时候,在下一次点击时有两个新文件夹.. 我尝试了很多,我无法弄清楚如何阻止或以不同的方式做到这一点.. 这里是late.js文件,负责新文件夹的添加.. late.js file

提前致谢..

3 个答案:

答案 0 :(得分:1)

下面添加此代码会产生任何影响,因为在所有内容都准备就绪之前,页面不会加载。

$(document).ready(function(){

});

答案 1 :(得分:0)

尝试:

function loadSelectors() {
   // here paste sys.js code

   $('#lfd').live('click', function(e) {//form button
     $.post( $("#frm1").attr("action"),//form
             $("#frm1 :input").serializeArray(),//form input
             function(info){
                $("#ui_info_anim_s").html(info);//popup
                $("#afolder").css("display","none");
                $("#fn_nameid").val('New Folder');
                //a lot of animation stuff for popup
                $("#ui_info_anim_s").animate({top: '40px'}, 'slow', function() {
                    $('#load_anim_privf').fadeIn( 500);
                    $('#load_anim_pubf').fadeIn( 500);
                    $('#load_anim_privf').fadeOut(1000,function(){});
                    $('#load_anim_pubf').fadeOut( 500);
                    $(this).delay(3000).animate({top: '+=40px',opacity:'0','filter':'alpha(opacity=0)'},'slow',function(){
                        $(this).css({"top": "-42px","margin-top": "-42px", "opacity": "1","filter":"alpha(opacity=0)" });


                });});

       });
       loadUp(1,'.ui_treetype','');// Reloading func

    });


    $("#frm1").submit( function() {
      return false;
    });

}

现在你需要调用函数loadSelectors()两次。首先是文档加载&amp; div创建的第二个

答案 2 :(得分:0)

这是因为当您将事件处理程序附加到div然后替换它们时,您将丢失所有事件绑定。

您需要的是通过父容器元素附加事件处理程序,无论重新加载如何,该元素都保留在页面上。我认为它可能是您在代码中称为$classid的那个。

在这种情况下,只需在您的页面dom ready事件中以这种方式附加事件处理程序:

$(document).ready(function(){

    $($classid).on("hover", "yourSelectorHere", function() {
       ... your code to handle event
    })

    $($classid).on("click", "yourSelectorHere", function() {
       ... your code to handle event
    })

    ...
})