// 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?
        });
    });

}


基本上,我有一个名为divcontent_display,其中显示了测试列表。加载完所有测试后,必须使每个测试链接都可单击。因此,我在以下功能中执行此操作:InitTeacherLinks(),他们可以在其中查看单个测试。

那么用户可以退出测试并返回到原始测试列表。因此,我必须在子功能中再次调用父功能。

尽管这样做确实可行,但我注意到我经常这样做。这是不好的逻辑还是对性能不利?

注意:我只能想到一个可行的原因。如果我错了,请纠正我。单击save_grading时,它会有效地破坏对原始(父函数)的引用,因此我们无需重新创建引用,而只是对其进行了初始化。这是正确的吗?

最佳答案

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

至少从代码来看就是这样。这可能取决于您的文档结构。

08-18 16:19