我在一個項目中工作,可以接收多個HTML
片段,每個片段可以從不同的用戶發送,實際上一些片段可以包含相同的id名稱或CSS
班級名稱,如何管理重複的名稱,並將其定位在JS
或PHP
DOM
?更好的方式來管理重複的id名稱...屬性
0
A
回答
-1
如果你知道的唯一ID來搜索,你可以輕鬆地在PHP更換使用str_replace函數精確匹配:
$html = str_replace(array('id="test1"', 'id="test2"'), array('id="new1"', 'id="new2"'), $html);
要在PHP中的字符串搜索和替換CSS類名,你可以使用的preg_replace 。 HTML節點上可能有多個類名,所以正則表達式可以更好地解析它。
1
如果你可以在JavaScript中存儲片段(AJAX或其他),那麼你可以在頁面上試試這個功能 - 它應該可以在任何設備上工作,並通過在將其添加到DOM之前使用隨機數字重命名來修復任何重複ID
$(function() {
var counter=0,prefix="renFrag",fragments = [
$('<div id="id1">Fragment1</div>'),
$('<div id="id2">Fragment2</div>'),
$('<div id="id3">Fragment3</div>')
]
$.each(fragments,function() {
var id = $(this).attr("id"); // the ID of the fragment
if ($("#"+id).length>0) { // find if this ID is already in the DOM
// rename the fragment. NOTE Date().getTime() was not random enough
// $(this).attr("id",id+'_'+Math.floor(Math.random() * 10000));
$(this).attr("id",prefix+(counter++));
}
$(this).appendTo("#container"); // add the fragment to the DOM
});
$("div").each(function() { // display the ID for debugging (remove when happy)
$(this).append("-"+this.id);
});
});
如果您需要訪問新片段,固定字符串添加到它,改變隨機到一個計數器,並使用$("div[id^=renFrag]").whatever
或$("div[id=renFrag"+cnt+"]").whatever
如果有一個重新嵌入你需要保留的腳本和CSS,一個通常不推薦的選項,但你的情況是特殊的,是將每個片段加載到它自己的iFrame中。請注意,在頁面或通過iFrames執行外部腳本存在安全風險。
相關問題
- 1. JavaScript的管理與重複的屬性名
- 2. VB.NET - 更好的方法來複制文件的屬性?
- 3. 更好的方式來存儲數據庫ID和查找名稱
- 4. 更好的方式來管理一般的調試消息?
- 5. 更好的方式來管理寶石所需的圖書館?
- 6. 最好的方式來更改域名
- 7. 更好的方式來管理Nhibernate關係表
- 8. 更好的方式來管理會話數據
- 9. 更好的方式來重複列表中元素的位置?
- 10. 更好的方式來處理除UILocalNotification以外的重複通知?
- 11. 更好的方式來增加屬性集合
- 12. 以重力形式更改元素的名稱屬性
- 13. 更新屬性不好,更新屬性。 id =>「id」?
- 14. 更好的方式來繼續而不是重複
- 15. 有沒有更好的方式來重複使用Matplotlib地塊?
- 16. 更改JSON.NET序列化屬性名稱的方式
- 17. C++更好的方式來處理函數重載
- 18. 有沒有更好的方式來處理cookie /重定向
- 19. 更Python的方式來重複一些動作的多個屬性
- 20. SQLite.SQLiteException:重複的列名稱:ID
- 21. 有沒有一種很好的方法來獲取當前的屬性名稱?
- 22. 格式良好的XML?標記名稱和屬性名稱中的XML引用
- 23. 正確的形式來命名與屬性名稱衝突的方法參數
- 24. 更好/正式名稱
- 25. 複式複選框具有相同名稱的屬性循環
- 26. 有沒有更好的方式來更改PHP中的DOMElement-> tagName屬性?
- 27. 具有相同屬性的重複ID
- 28. 重命名屬性名稱並更改多個對象的值
- 29. Magento - 具體產品的管理員屬性名稱
- 30. WMI更改名稱屬性
你可以[淨化](http://htmlpurifier.org/)他們? – Manatax
@Manatax謝謝我會測試它... – kapsula