Javascript事件和递归问题

Javascript事件和递归问题,javascript,javascript-events,Javascript,Javascript Events,我使用jQuery对话框将其他页面加载到主页上的对话框中。其他页面可能有锚定标记,我正在使用load函数的completed事件来选择加载内容的div中的所有锚定标记。然后,我连接锚定标记click事件处理程序,以便将内容加载到主页上包含的div中。然而,这只起作用两次。运行下面的示例代码时,对话框中会出现Partial1。当我在对话框中单击Partial2链接时,Partial1将加载到对话框中,但是,这次当我单击Partial2链接时,它将加载到主页中。我做错了什么和/或没有抓住什么 主页/

我使用jQuery对话框将其他页面加载到主页上的对话框中。其他页面可能有锚定标记,我正在使用load函数的completed事件来选择加载内容的div中的所有锚定标记。然后,我连接锚定标记click事件处理程序,以便将内容加载到主页上包含的div中。然而,这只起作用两次。运行下面的示例代码时,对话框中会出现Partial1。当我在对话框中单击Partial2链接时,Partial1将加载到对话框中,但是,这次当我单击Partial2链接时,它将加载到主页中。我做错了什么和/或没有抓住什么

主页/索引:

<a href="/Home/Partial1" id="help">Partial 1</a>

<div id="dialog" style="display: none">

</div>


<script type="text/javascript">
    $(document).ready(function () {
        $("#help").click(function () {
            adjustNestedAnchors($(this));
            $("#dialog").dialog().show();
            return false;
        });

        function adjustNestedAnchors(element) {
            $("#dialog").load($(element).attr("href"),
                function (response, status, xhr) {
                    if (status != "error") {
                        $("#dialog a").click(function () {
                                $("#dialog").load($(this).attr("href"), adjustNestedAnchors($(this)));
                                return false;
                        });
                    }
                });
        }
    });
</script>

$(文档).ready(函数(){
$(“#帮助”)。单击(函数(){
调整嵌套的基准($(此));
$(“#dialog”).dialog().show();
返回false;
});
功能调整后的嵌套锚(元件){
$(“#对话框”).load($(元素).attr(“href”),
功能(响应、状态、xhr){
如果(状态!=“错误”){
$(“#对话框a”)。单击(函数(){
$(“#dialog”).load($(this.attr(“href”)、adjustNestedAnchors($(this));
返回false;
});
}
});
}
});
主/部分1

This is a sample partial view, which has a link back to <a href="/Home/Partial2">Partial2</a>.
这是一个示例局部视图,它有一个指向的链接。
主/部分2

This is a sample partial view, which has a link back to <a href="/Home/Partial1">Partial1</a>.
这是一个示例局部视图,它有一个指向的链接。

问题在于这一行:

$("#dialog").load($(this).attr("href"), adjustNestedAnchors($(this)));
在调用
div
上的
load
之前,将调用链接上的
adjustNestedAnchors
,因此在加载内容后不会调整嵌套锚

相反,我相信你想要的是这样的:

<a href="/Home/Partial1" id="help">Partial 1</a>

<div id="dialog" style="display: none">

</div>


<script type="text/javascript">
    $(document).ready(function () {
        $("#help").click(function () {
            loadDialog(this);
            $("#dialog").dialog().show();
            return false;
        });

        // load link in dialog, and adjust its links to load inside it
        function loadDialog(link) {
            $("#dialog").load($(link).attr("href"), function (response, status, xhr) {
                $("#dialog a").click(function () {
                    loadDialog(this);
                    return false;
                });
            });
        }
    });
</script>

$(文档).ready(函数(){
$(“#帮助”)。单击(函数(){
加载对话框(本);
$(“#dialog”).dialog().show();
返回false;
});
//在对话框中加载链接,并调整其链接以在其中加载
函数加载对话框(链接){
$(“#dialog”).load($(link).attr(“href”)、函数(响应、状态、xhr){
$(“#对话框a”)。单击(函数(){
加载对话框(本);
返回false;
});
});
}
});
(免责声明:未经测试。)


请注意,我已将
adjustNestedAnchors
重命名为
loadDialog
,我认为这是对其主要功能的更准确描述。

这非常有效!感谢您指出我的错误和函数名建议!