// 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?
});
});
}
基本上,我有一个div
调用content_display
显示测试列表。在我加载完整的测试之后,我必须使每个测试链接都可点击。所以我在这个功能中做到这一点:InitTeacherLinks()
他们可以查看单个测试。jQuery无限嵌套性能不好吗?
那么用户可以退出测试并返回到原始测试列表。所以我必须在子函数中调用父函数再次。
虽然这样做工作,我注意到我经常这样做。 这是不好的逻辑还是坏的表现?
注意:我只能想到这可能工作的一个可能的原因。如果我错了,请纠正我。当点击save_grading
时,它会有效地破坏对原始(父函数)的引用,而不是创建重复的引用,我们只是简单地重新初始化它。这是正确的吗?
那么当'open-ungraded-test'被点击时,它实质上就是抹掉了这个元素。这是否重置了点击处理程序,或者即使元素消失,它仍然存在? – KickingLettuce
如果这些元素从dom中删除,那么处理程序将与它们一起被删除。这不会是一个问题。对不起,我错过了。 – recursive
如果是这样,并且没有堆栈溢出,我想上面的代码是正确的。 – KickingLettuce