Добавить идентификатор в тег на основе текста, который он содержит - PullRequest
1 голос
/ 09 апреля 2011

Мне нужно добавить «id» в h2 на основе текста, который он содержит.То, что у меня не работает.

Начинается так

<h2>Revision 3</h2>

Скрипты запускаются

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

Заканчивается так

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

Ответы [ 5 ]

2 голосов
/ 09 апреля 2011

Или, если вы просто хотите добавить ID, вы можете использовать что-то более быстрое, например:

$('h2:contains("Revision 3")').attr('id','rev3');
2 голосов
/ 09 апреля 2011
$('h2').each(function ()
{
    if ($(this).text() == "Revision 3")
        $(this).attr('id','rev3');
}

Перебирает все теги h2, если текст тега равен Revision 3, для идентификатора устанавливается значение rev3

1 голос
/ 09 апреля 2011
$('h2:contains("Revision 3")').attr("id", "rev3");
1 голос
/ 09 апреля 2011

Вы не можете заключить строку в строку, используя разделители строк ... поэтому вы не можете использовать " внутри строки, разделенной ", но вы могли бы используйте ' внутри строки, ограниченной "). Например:

$('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');
1 голос
/ 09 апреля 2011

Я думаю, что пробелы в начале и конце Revision 3 создают проблему.

Попробуйте это:

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