我在一个项目中工作,可以接收多个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