javascript - jQuery/JS : looping function load

标签 javascript jquery

现场:http://jonirautiainen.net/code_edit/左边是一个带有文件树的面板。

.load('scandDir.php') 加载新的 <ul><li></li></ul> php 文件中的元素。

问题在于,因为这个脚本是一个循环,所以它执行 loadNew();多次。 请检查前面提到的页面上的实时问题。单击这些文件夹将其打开,您将看到这些文件多次显示。

脚本需要循环,因为.load是异步的。 $(".file-tree a").on(不会让我选择通过执行 .load 创建的那些新元素。

还有其他方法可以做到这一点吗?

    function loadNew()
    {
        $(".file-tree a").on("click",function ()
        {
                var path = $(this).attr("title");
                var folder = $(this).text();
                var name = $(this).attr("name");
                var id = $(this).parent().attr("id");
                $("#testi").html(path + folder + name + id);
                var liHtml = $(this).parent().html();               
                    if(liHtml.match(/<ul /))
                    {           

                    }else
                    {
                        if(name=="dir")
                        {
                            $("#hiddenDiv1").load("scanDir.php?path=" + path + "/" + folder, function() {
                              var hiddenDiv = $("#hiddenDiv1").html();
                                $("#" + id).append(hiddenDiv); 
                                loadNew();
                            });
                        }
                    }

        });
    }
    loadNew();

最佳答案

您不断增加新的点击处理程序。我知道您正在加载新元素,并且它们也需要处理其事件,但在此过程中您将向现有元素添加更多处理程序。因此,在展开多个目录后,较旧的元素上将有几个处理程序;当您单击这些处理程序时,所有这些处理程序都将被调用(这将为您提供其他元素)。

一种方法是注意添加点击处理程序的内容。仅将其添加到新加载的元素中。

另一种更简单的方法是利用 jQuery on() 的强大功能。方法。如果你这样写:

$('#fileNavi').on('click', '.file-tree a', function() {
  ...
});

并且仅一次,处理程序将对当前和任何 future 出现在层次结构中的元素起作用。然后在处理程序中只需执行 AJAX 调用并将新数据添加到文档中,信任 jQuery 会为您处理事件。完全摆脱 loadNew 函数,尤其是那里的异常递归。

关于javascript - jQuery/JS : looping function load,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9506170/

相关文章:

javascript - img onload 函数有时未定义

javascript - 如何使用多个 y 轴正确放大图表

JQuery 将名字的第一个字母放在圆圈中

JQuery:委托(delegate)和日期选择器

javascript - Backbone 或 JavaScript 在调用构造函数后保留模型的状态

javascript - 当正则表达式组不为 null 或为空时插入连字符

javascript - 如何判断一篇博文是否被选中?

javascript - PHP if (isset($_POST ['' ])) +Jquery 在同一页面发送

jquery - 选择的搜索不适用于 Jquery 对话框。为什么?

javascript - 使用 jQuery 更改滚动时的背景附件属性