2015-06-16 4 views
-1

То, что я пытаюсь сделать, это изменить определенное слово в div, который я добавил, если родительский div содержит определенное слово;jQuery - Заменить слово в дочернем div, если родительский div содержит определенное слово

<p class="days">Stock, 1 piece remaining.</p> 

Я должен добавить дополнительный обходной путь, чтобы добавить еще один DIV для получения дополнительной информации с помощью функции: добавьте перед

$(".days").append('<div class="daysAddiontalInfo">Explaination of stock 1 piece</div>'); 

я хотел следующее; если мой родительский div (.days) содержит номер 1 - мне нужно его показать 1 часть, но если она содержит номер 2,3,4 или 5, мне нужно, чтобы она отображала 2,3,4 или 5 штук.

Я понятия не имел, как расширить код для выполнения этой конкретной задачи.

Заранее благодарим за ваше время и внимание!

+0

Вы можете посмотреть https://api.jquery.com/contains-selector/ – odedta

ответ

0

Вот пример решения:

var $days = $(".days"); 
var pieces = $days.text().match(/\d/); 

$days.append('<div class="daysAddiontalInfo">Explaination of stock '+pieces+' piece</div>'); 

И рабочий код: http://jsfiddle.net/367vvq1a/

Кроме того, чтобы принять форму множественного числа во внимание - и приходится иметь больше чем один .days элемент - вы можете это сделать как это:

$(".days").each(function() { 
    var piecesMatch = $(this).text().match(/\d+/); 
    if (piecesMatch) { 
     var piecesCount = parseInt(piecesMatch[0]); 
     var piecesText = piecesCount + ((piecesCount > 1) ? ' pieces' : ' piece'); 
     $(this).append('<div class="daysAddiontalInfo">Explaination of stock '+piecesText+'</div>'); 
    } 
}); 

А вот демо: http://jsfiddle.net/p02wvtvs/1/

+0

Это форма множественного числа выглядит многообещающим, но это не меняет значение из кусок на куски, когда число больше 1? он продолжает показывать кусок, независимо от того, какой номер находится в абзаце .days? – user3587168

+0

Я сделал небольшое исправление (оно соответствовало только одной цифре вместо целого числа, поэтому, если дано, например, 17 оно рассматривалось как 1;)) и подготовил рабочий код, посмотрите: http: // jsfiddle .net/p02wvtvs /. –

+0

@ user3587168 Я также сделал обновление учетной записи, чтобы иметь более одного элемента '.days' –

0

, если вы уверены, что это будет номер, то вы можете использовать

var number = parseInt($(".days").text()); 
$(".days").append('<div class="daysAddiontalInfo">Explaination of stock "+ number +" piece</div>'); 

иначе вы можете поместить конкретное слово в span и получить его значение

<p class="days">Stock, <span>1</span> piece remaining.</p> 

и в JavaScript

var word = $(".days span').text(); 
$(".days").append('<div class="daysAddiontalInfo">Explaination of stock "+ word +" piece</div>'); 
0

Вы можете предоставить функцию методу append(), который будет проверять HTML каждого элемента .days LY. Оттуда вы можете использовать регулярное выражение для соответствия строкам 1 piece, 2 pieces и вернуть новый HTML-код для добавления. Попробуйте это:

$('.days').append(function(i, html) { 
    var matches = /(\d pieces?)/gi.exec(html); 
    return '<div class="daysAddiontalInfo">Explaination of stock ' + matches[0] + ' </div>'; 
}); 

Example fiddle

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