根据标记包含的文本将标记添加到标记

时间:2011-04-08 21:38:09

标签: jquery jquery-selectors replace contains

我需要根据它包含的文本为h2添加一个“id”。我所拥有的不起作用。

像这样开始

<h2>Revision 3</h2>

脚本运行

$('h2:contains(" Revision 3 ")').replaceWith( "<h2 id="rev3">Revision 3</h2>"); 

像这样结束

<h2 id="rev3">Revision 3</h2>

5 个答案:

答案 0 :(得分:2)

$('h2').each(function ()
{
    if ($(this).text() == "Revision 3")
        $(this).attr('id','rev3');
}

循环显示所有h2标记,如果标记文字为Revision 3,则会将ID设置为rev3

答案 1 :(得分:2)

或者,如果您只想添加ID,可以使用更快的内容,如:

$('h2:contains("Revision 3")').attr('id','rev3');

答案 2 :(得分:1)

我认为修订版3开头和结尾的提取空间正在产生问题。

试试这个:

$('h2:contains("Revision 3")').replaceWith( "<h2 id="rev3">Revision 3</h2>");  

答案 3 :(得分:1)

你不能使用字符串分隔符来引用字符串中的字符串...所以你不能在用"分隔的字符串中使用 ",但是你可以在用'分隔的字符串中使用"。例如:

$('h2:contains(" Revision 3 ")').replaceWith( "<h2 id='rev3'>Revision 3</h2>");

应该有效。此外,应删除字符串开头和结尾的空格,因为它们不在您要查找的字符串中:

$('h2:contains("Revision 3")').replaceWith( "<h2 id='rev3'>Revision 3</h2>");

最后,使用类似的东西会不会更容易:

$('h2:contains("Revision 3")').attr('id','rev3');

鉴于id 必须在文档中唯一,也许值得将选择器限制为仅一个元素:

$('h2:contains("Revision 3")').eq(0).attr('id','rev3');

答案 4 :(得分:1)

$('h2:contains("Revision 3")').attr("id", "rev3");