从<Jquery函数中删除<p>标记

时间:2016-01-08 14:49:12

标签: javascript jquery html

我已经为我的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'
                });
            }); 
        });  

3 个答案:

答案 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>

Codepen exemple here

但是,最明智的做法是从最初的后端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