[英]Embed once declared html content at muliple places within a page
我希望在許多地方使用/嵌入html內容(在本例中為列表<ul>
),但在頁面中僅聲明一次。
例如,考慮以下內容:
<ul>
<li>A</li>
<li>B</li>
<li>...</li>
<li>X</li>
</ul>
現在,此內容需要在許多地方使用,如下所示:
使用1:
<div class='left'>
<ul id='listA'>
<li>A</li>
<li>B</li>
<li>...</li>
<li>X</li>
</ul>
</div
使用2:
<div class='right'>
<ul id="listX">
<li>A</li>
<li>B</li>
<li>...</li>
<li>X</li>
</ul>
</div>
我確信這可以在服務器端或通過客戶端的Ajax調用來完成,但是目的是優化/減少每個頁面請求發送的html內容(數據字節)。 因此,如果特定內容出現在頁面的n
位置中,則必須僅發送一次 ,然后在其中將其操作到所有n
不同的位置。 因此,在服務器端這樣做是沒有意義的,Ajax將增加傳輸過載,因為這是一個單獨的調用。
我認為html / css中沒有任何可做的事情,即使iframe
也不能用於此目的。 但是我敢肯定,javascript / jQuery可以做到這一點。 怎么樣?
我真的建議您看一下Handlebars(js框架。)簡而言之,這是一個js模板框架。 http://handlebarsjs.com/
在這種情況下,我建議您使用requirejs用html片段定義模塊,然后每當需要使用它時,都可以要求它並將模板編譯為所需的模板。
您也可以使用jQuery或其他js lib來更改html元素的屬性,如Philip Walton所說。 $( “UL”)。EQ(0).removeClass( “右”)。addClass( “左”)
我能看到的最好的選擇是使用javascript。 您可以使用JQuery簡化語法。 就在一個變量定義這個可重復使用的標記,並在對文檔准備事件不同的地方通過設置的innerHTML的插入left
和right
的div。
$(document).ready(function() {
var reusablehtml ="<ul id='nameplaceholder'><li>A</li><li>B</li><li>...</li><li>X</li></ul>";
$("#left").html(reusablehtml.replace("nameplaceholder", "listA"));
$("#right").html(reusablehtml.replace("nameplaceholder", "listX"));
});
如果HTML已在頁面上的某個位置,則可以將其復制到jQuery中,更改需要更改的內容,然后將其插入其他位置。
例如,如果頁面上唯一的內容是<ul>
,則可以執行以下操作:
var originalUL = $("ul");
$("body").append($('<div class="left" />').append(originalUL.clone().attr('id', 'listA')));
$("body").append($('<div class="right" />').append(originalUL.clone().attr('id', 'listB')));
這是一個示例: http : //jsfiddle.net/uU7cV/
但是,如果您要執行很多操作,並且每個實例的更改都很復雜,那么我會考慮使用Javascript模板系統或Javascript MVC框架(例如Backbone.js http://documentcloud.github)。 COM /骨干網/
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.