2012-11-25 33 views
1

目前我使用jQuery的開模精細工作代碼:如何使用jquery顯示帶有modal.open的html文件?

  $(document).ready(function(){   
      $("span.ico-detail").click(function(){ 
       modal.open({content: "View detail of " + $(this).parent().parent().attr("id")}); 
       e.preventDefault(); 
      }); 
     }); 

而現在的問題是:如何使用modal.open打開一個名爲HTML文件「view.html」這contaning「觀的細節」的字符串?

我應該如何更改內容:「xxx」與,所以我可以打開HTML文件(view.html)並將其與其他文本結合?

以前感謝。

回答

2

如果view.html存儲在服務器上,並且它的內容是靜態的,那麼你可以選擇使用Ajax預加載文件的內容。

$(function() { 
    window.myAppNs = { 
     viewContent: null; 
    }; 

    $.ajax({ 
     url: 'view.html', 
     dataType: 'html', 
     type: 'GET' 
    }).done(function (resp) { 
     myAppNs.viewContent = resp; 
    }); 

    $("span.ico-detail").click(function(){ 
     modal.open({content: myAppNs.viewContent + $(this).parent().parent().attr("id")}); 
     e.preventDefault(); 
    }); 
}); 

我正在創建一個全局變量myAppNs。這將保存所有與應用相關的變量。這個想法不會污染具有不必要變量的全局名稱空間。有更好和更安全的方法來創建一個名稱空間。如果你感興趣,你可以谷歌相同。

ajax調用預加載view.html的內容並將其存儲在myAppNs.viewContent中。點擊處理程序從變量中讀取內容。

有輕微的機會,用戶可以點擊該元素則返回Ajax響應之前。如果這是一個問題,你可以隨時移動的命名空間創建和Ajax調用出來的document.ready,並將其放置在head部分,引用jquery後即可。這應該讓瀏覽器有足夠的時間在dom準備好之前獲取內容,但響應可能會延遲的可能性仍然很小。如果您需要確保用戶可以通過點擊只有當數據被取出,然後綁定done回調Ajax調用內的點擊處理程序。

+0

大它的工作原理,但我可以取代 「URL: 'view.html',數據類型: 'HTML'」 與 「view.php碼= A001?」?所以我可以使用MySQL的動態PHP? –

+0

當然。只要'view.php'的響應具有正確的mimetype設置,就可以排除'dataType'選項。否則,您將需要包含'dataType'選項。您可以在文檔中找到更多信息:http://api.jquery.com/jQuery.ajax/ ...這應該是一個好的開始。如果您有更多查詢,可以在SO上搜索相同的內容或創建一個新問題。 –

+0

現在的代碼只會請求'view.php?code = a001'的內容一次。如果響應可能隨時間或其他參數而變化,則需要將ajax呼叫移至更合適的位置。 –

相關問題