Цикл через класс. Получить входные значения и значения диапазона - PullRequest
0 голосов
/ 17 июня 2011

Просто когда я думаю, что бью JQuery, я получаю тупик.

<div class="productAttributeValue">
<div class="productOptionViewRectangle">
<ul>
    <li class="option">
        <label for="dca37e79338c28f796c3bdd4e88492f2">
            <input
                type="radio"
                class="validation"
                name="attribute[52]"
                value="97"
                id="dca37e79338c28f796c3bdd4e88492f2"
                        />
            <span class="name">25 ML</span>
        </label>
    </li>

    <li class="option">
        <label for="b6cc5db62235218dade2cbe8dcdfdad4">
            <input
                type="radio"
                class="validation"
                name="attribute[52]"
                value="98"
                id="b6cc5db62235218dade2cbe8dcdfdad4"
                        />
            <span class="name">50 ML</span>
        </label>
    </li>

</ul>
</div>
</div>

Мне нужно перебрать li, получить значение ввода и изменить текст class = "name"в этом ли.Если значение = 97, то текст для этого промежутка должен составлять, например, 50 мл (RRP $ 69,00).

Мы используем сторонние материалы, которые отображают страницу по своему усмотрению.Нам не нужно менять его на то, что нам нужно.

Еще раз спасибо за вашу помощь.Цени это.

Ответы [ 3 ]

3 голосов
/ 17 июня 2011

Вы можете сделать это просто с помощью этой строки кода:

$('.option input[value=97]').next('.name').text('50 ML (RRP $69.00)');

Чтобы упростить добавление дополнительных опций, создайте массив для того же:

var d = [
  {'value':'97','text':'50 ML (RRP $69.00)'},
  {'value':'[your value]','text':'[your text]'}
];

$(d).each(function() {
  $('.option input[value='+this.value+']').next('.name').text(this.text);
});
0 голосов
/ 17 июня 2011

Это должно быть довольно просто, используя каждую функцию JQuery. Ваш код будет выглядеть так:

$("li.option").each(function() {
    var val = $(this).children("input").val();

    //Put your logic here to decide what the span should say
    var name = "50 ML (RRP $69.00)";//Just putting this in for the example

    $(this).children("span.name").val(name);
});

Это будет циклически проходить через все ваши li.options, захватывать значение их дочернего элемента ввода, а затем устанавливать для их дочернего элемента span.name значение, которое вы хотите.

0 голосов
/ 17 июня 2011

Просто используйте $.each(), чтобы пройти их, и find(), чтобы найти нужные вам элементы:

$('.option').each(function(i){
    var t = $(this).find('.name');
    switch ($(this).find('input').val()){
        case "97":
            t.text(" 50 ML (RRP $69.00)");
            break;
                case "98":
            t.text(" text for 98...");
            break;
    } 
});

пример: http://jsfiddle.net/niklasvh/XnAp3/

...