JQuery найти текстовые строки заменить и переместить - PullRequest
0 голосов
/ 21 февраля 2012

Я бы хотел использовать JQuery для переупорядочения всех данных, содержащих определенное слово. Насколько я могу судить, платформа .find () работает с элементами, а не с элементами в строке.

Данныев настоящее время устроен так:

    <div>A single zones 1,2 and 3 Tube ticket to £2.20</div>
<div>A single zones 1,2 and 4 Bus ticket to £2.20</div>
<div>A zones 1,2 and 3 Ferry ticket to £2.20</div>

Я хочу выяснить, есть ли в DIV слово 'single', и переместить его после данных зоны, чтобы тип билета отражал, если он одинарный.

<script type="text/javascript">
    $(document).ready(function(){
        $('div').each(function(){
            if($(this).find('single')) {  };
        });
    });
</script>

Я дошел до сих пор.Очевидно, что это не сработает.Любые идеи?

РЕДАКТИРОВАТЬ это то, что я хотел бы, чтобы результат был:

<div>A zones 1,2 and 3 single Tube ticket to £2.20</div>
    <div>A zones 1,2 and 4 single Bus ticket to £2.20</div>
    <div>A zones 1,2 and 3 Ferry ticket to £2.20</div>

Ответы [ 2 ]

1 голос
/ 21 февраля 2012

Вы можете сделать что-то вроде этого:

​$("div:contains(single)").html(function(i,currentVal) {
   return currentVal.replace(/single /,"")
                    .replace(/ (Tube|Bus|Ferry)/," single $1");
});​​​​​​​​​​​​​​​

Демо: http://jsfiddle.net/nnnnnn/R3V63/

При этом используется селектор ":contains" , чтобы найти все дивы, содержащие слово «single», а затем используется метод .html() с синтаксисом обратного вызова, который позволяет индивиду значения обрабатываются по одному, когда переданной функции обратного вызова передается текущее html-содержимое каждого элемента, а возвращаемое значение становится новым содержимым.

Чтобы «переместить» слово «одиночный», я сначала заменяю его пустой строкой, а затем вставляю его непосредственно перед любым из слов «Tube», «Bus» или «Ferry». Очевидно, что если есть какие-то другие виды транспорта, которые необходимо включить, в регулярное выражение можно внести изменения. Попытка найти правильное место путем сопоставления в «Зонах 1, 2 и 3» казалась слишком сложной, учитывая возможные варианты, такие как «Зона 1», «Зоны 2 и 3» и т. Д.

См. Документ на .replace() для получения дополнительной информации.

РЕДАКТИРОВАТЬ: альтернативное регулярное выражение для соответствия "Zones ..." (не так уж много хлопот в конце концов):

.replace(/(zones?(?:[\d, ]|and)+) /,"$1 single ");

(вроде нормально работает: http://jsfiddle.net/nnnnnn/R3V63/4/)

0 голосов
/ 21 февраля 2012

Проверьте содержит селектор

...