2013-06-23 57 views
0

我正在使用jQuery對話框將其他頁面加載到主頁上的對話框中。其他頁面可能具有定位標記,並且我正在使用加載函數的已完成事件來選擇加載內容的div中的所有定位標記。然後我連接錨標籤點擊事件處理程序,以便內容加載到主頁面上包含的div。然而,這隻能工作兩次。當您運行下面的示例代碼時,Partial1出現在對話框中。當我單擊對話框中的Partial2鏈接時,Partial1會加載到對話框中,但是,這次單擊Partial2鏈接時,它會加載到主頁面中。我做錯了什麼和/或沒有把握?Javascript事件和遞歸問題

首頁/索引:

<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> 

首頁/ Partial1

This is a sample partial view, which has a link back to <a href="/Home/Partial2">Partial2</a>. 

首頁/ Partial2

This is a sample partial view, which has a link back to <a href="/Home/Partial1">Partial1</a>. 

回答

2

問題就是這條線:

$("#dialog").load($(this).attr("href"), adjustNestedAnchors($(this))); 

將調用鏈接adjustNestedAnchors呼籲divload之前,所以沒有什麼是調整嵌套錨後的內容已被加載。

相反,我相信你想要的東西是這樣的:

<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> 

(免責聲明:沒有測試)

請注意,我已經改名爲adjustNestedAnchorsloadDialog,我認爲這是一個更準確描述其主要功能。

+0

這很好用!感謝您指出我的錯誤和函數名稱建議! – codechurn

+0

@藝術:不客氣! – ruakh