2015-11-06 2 views
0

У меня есть куча divs ('.program-collector') с динамически сгенерированными идентификаторами. Идентификаторы тезиса обычно более одного слова, поэтому я использовал метод strtok в своем PHP, чтобы уменьшить идентификаторы до первого слова исходной многословной строки ID, которая отлично работает.Выбор элемента с помощью textContent, а затем замена элемента ID

Однако, два из дивы имеет один и то же первое слово («обязанность Основу» и «обязанность Advanced»), так что я пытаюсь определить DIV с заголовком в нем, который содержит оригинальный строки идентификатора «Действующие основы» и замените его идентификатором на новый («Основы»).

В моей JQuery, я попытался этот метод со свойством TextContent ...

$('.program-collector').each(function(k,ttl) { 
    if($(ttl).find("h3").textContent =="Acting Basics") { 
     alert("Alert"); 
     $(ttl).attr("id","Basics"); 
    } 
}; 

... но это не приводит к срабатыванию тревоги всплывающего окна или изменить идентификатор, так что-то в моем коде выключено , Может ли кто-нибудь пролить свет на то, как улучшить мой код или дать совет по другому методу, который я должен использовать?

ответ

2

$(ttl).find("h3").textContent должно быть $(ttl).find("h3").text(). textContent - свойство DOM, а не метод jQuery.

Также возможно, что у вас есть пробел в элементе. Если это не соответствует, попробуйте подрезки:

$('.program-collector').each(function(k,ttl) { 
    if($(ttl).find("h3").text().trim() =="Acting Basics") { 
     alert("Alert"); 
     $(ttl).attr("id","Basics"); 
    } 
}; 

Вы могли бы сделать это в одном вызове:

$('.program-collector:has(h3:contains("Acting Basics"))').attr('id', 'Basics'); 
+0

Благодаря Barmar. Однако я все равно получаю тот же результат. –

+0

Попробуйте обрезать его перед сравнением, если есть пробелы вокруг текста. – Barmar

0

Вот упрощенная версия, которая не требует each() функции.

$('.program-collector').find('h3:contains("Acting Basics")').closest('.program-collector').attr("id","Basics"); 

http://jsfiddle.net/bhx36p9f/

+0

Это добавляет идентификатор к 'h3', а не' .program-collector'. – Barmar

+0

обновил код для обновления идентификатора .program-collector. – DinoMyte

+0

Это работает, хотя ваша первоначальная попытка дала мне идею для одного лайнера в моем ответе. – Barmar

Смежные вопросы