我已经为我的HTML写了一个Jquery函数,现在后端正在添加<p>
标签作为变量的包装器。是否可以通过Jquery删除它们?我找到了一些选项,可以从像“class”这样的HTML东西中删除它,但是在Jquery函数中无法做同样的事情。也许有人可以帮忙。感谢
现在看起来像这样:
$(document).ready(function(){
$('#<p>1</p>').on('click', function(){
$('#<p>berlin</p>').ScrollTo({
duration: 800,
easing: 'linear'
});
});
});
看起来应该是这样的:
$(document).ready(function(){
$('#1').on('click', function(){
$('#berlin').ScrollTo({
duration: 800,
easing: 'linear'
});
});
});
答案 0 :(得分:1)
如上所述(https://stackoverflow.com/a/79022/2412797):
对于HTML 4,答案是技术上: ID和NAME令牌必须以字母([A-Za-z])开头,后面可以跟任意数量的字母,数字([0-9]),连字符(“ - ”),下划线(“_”) ,冒号(“:”)和句号(“。”)。
HTML 5更宽容,只说id必须包含至少一个字符,并且不能包含任何空格字符。
但是如果你想做你所要求的,因为你无法改变后端行为,首先要替换id值。
警告:因为您的代码可能不符合W3C,所以以下代码肯定不符合跨浏览器标准。在Chrome上,以下作品。
见这个例子:
var weirdItems = document.querySelectorAll("[id^='<p>']");
[].forEach.call(weirdItems, function (weirdItem) {
weirdItem.setAttribute("id",
weirdItem.getAttribute("id")
.replace(/<p>([-\w]+)<\/p>/g, "$1")
);
});
console.log(
document.getElementById("1"),
document.getElementById("2")
);
假设您的代码是
<div id="<p>1</p>" class="weird-item">Item1</div>
<div id="<p>2</p>" class="weird-item">Item2</div>
但是,最明智的做法是从最初的后端HTML生成中删除<p></p>
。
答案 1 :(得分:1)
此类内容应将<div id="<p>1</p>"></div>
转换为<div id="1"></div>
$("[id^='<p>']").each(function() {
var id = $(this).attr("id");
$(this).attr("id", id.substring(3, id.length - 4));
});
答案 2 :(得分:0)
我找到了一个解决我问题的Kirby插件。谢谢你的帮助。
如果有人有兴趣,这是该插件的链接。 https://github.com/jbeyerstedt/kirby-plugin-kirbytextRaw