2009-10-28 3 views
0

Мы поставляем кусок содержимого HTML для импорта и отображения на чужой странице. Владельцы страницы помещают заголовок вокруг нашего блога контента, но название - это название нашего веб-сервиса, который предоставляет контент, а не удобное для пользователя имя, которое мы хотим отображать для пользователей. Они не могут понять, как изменить название на своем конце, мы не хотим менять название нашего веб-сервиса, и ему нужно хорошо выглядеть для демонстрации через несколько дней.Заменить определенную строку на HTML-странице с помощью JQuery

Идеальное решение для них, чтобы выяснить, как использовать свой инструмент портала, чтобы иметь возможность настраивать названия, но это вряд ли произойдет до демонстрации. Поэтому я думал, что мы могли бы добавить какой-то JavaScript в контент, который мы отправляем, что изменит название для них. Это купило бы им время, чтобы выяснить, что они делают.

Код для их названия выглядит следующим образом:

<div class="titleClass"> Bad Title </div> 

Я хотел бы заменить "Bad Title" с "Good Title". Я хотел бы найти этот текст на странице с помощью селектора jQuery, но, к сожалению, есть несколько элементов div с классом titleClass, и я хочу только изменить один из них .... есть ли селектор, который я мог бы использовать, проверьте текст «Плохое название» внутри тега div? Или мне нужно написать отдельную функцию, которая будет перебирать все разные заголовки на странице и проверять каждую из них, чтобы увидеть, содержит ли она «Плохое название»? Если мне нужно сделать второе, у кого-нибудь есть образец кода для обмена?

ответ

1

Возможно, вы хотите сделать это проще?

$(document).ready(function() { 
    $('div.titleClass:contains("Bad Title")').text("Good title"); 
}); 

Посмотрите на селектор contains.

+0

Не подходит для точного матча, к сожалению. – karim79

4

Сначала получить коллекцию всех элементов с соответствующим текстом:

var $matches = $('div.titleClass').filter(function() { 
    return $(this).text() == 'Bad Title'; 
}); 

, а затем заменить текст согласующих элементов:

$matches.each(function() { 
    $(this).text('New Title'); 
}); 

выше будет искать элементы с текстом точно соответствие «Плохое название». Если вам нужен какой-либо элемент, то содержит текст «Плохое название», например. «Плохой Заголовок», вы должны использовать indexOf или search и т.д .:

return $(this).text().indexOf('Bad Title') > -1; 

последнее предостережение чувствительность к регистру. Если вы хотите сделать нечувствительный к регистру матч, я бы предложил примерно следующее:

// the div contains Bad Title of whatever case 
return $(this).text().search(/Bad Title/i) > -1; 

// the div exactly matches Bad Title of whatever case 
return $(this).text().search(/Bad Title/i) > == 0; 
+1

извините. чтобы сделать его более надежным – jitter

+0

@jitter - это зависит от того, хочет ли он, чтобы заголовок * содержал * «Плохое название» или * совпадение * «Плохое название». Я принял последний. – karim79

+0

Я действительно рад иметь оба варианта. Благодаря! –

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