jQuery无限嵌套会影响性能吗?

Is jQuery Infinite nesting bad for performance?

本文关键字:性能 影响 无限 嵌套 jQuery      更新时间:2023-09-26
// page load 
InitTeacherLinks()
function InitTeacherLinks()
{
    $(".open-ungraded-test").click(function()
    {
        $.post("class_viewer.php", {
            _open_lesson_direct : 1
        }, function(data)
        {
            $("#content_display").html(data);
             InitGradingActions(test_taken_id); // Notice this Call
        });
    })
}
function InitGradingActions(test_taken_id)
{
    $("#save_grading").click(function()
    {
        $.post("class_viewer.php", {
            _save_graded_test : 1
        }, function(data)
        {
            $("#content_display").html(data);
            InitTeacherLinks(); // Is this Circular logic?
        });
    });
}

基本上,我有一个名为content_displaydiv,它显示了一系列测试。在我加载了完整的测试后,我必须使每个测试链接可点击。所以我在这个函数InitTeacherLinks()中这样做,他们可以看到一个单独的测试。

用户可以退出测试,回到原来的测试列表。所以我必须调用函数再次在子函数。

虽然这确实有效,但我注意到我经常这样做。这是坏的逻辑还是坏的性能?

注释:我只能想到一个可能的原因。如果我说错了,请纠正我。当单击save_grading时,它有效地破坏了对原始(父函数)的引用,因此我们只是重新初始化它,而不是创建重复的引用。这样对吗?

我不认为代码有堆栈溢出问题,但看起来确实可能有错误。每次执行InitTeacherLinks()时,一个新的点击处理程序被分配给.open-ungraded-test。这意味着每次InitTeacherLinks()运行时,在点击期间都有一个额外的ajax帖子,这可能很多。

至少从代码中看起来是这样的。这取决于文档的结构。

我最终没有改变任何东西,而是沿用了上面的内容。

因为每次元素被销毁时,点击事件都被解除绑定,这并没有创建一个无尽的循环(或Stackoverflow错误),这是我关心的。问题中的代码是正确的