jQuery каждая функция не работает, необходимо заменить каждый атрибут - PullRequest
3 голосов
/ 12 апреля 2011

У меня есть этот HTML

<form method="POST" action="" id="order" class="forms">
    <div>
        <span class="col1">Ref.</span>
        <span class="col2">Number</span>
        <span class="col3">Color</span>
        <span class="col4">Remarks</span>
        <span class="col5">Prijs</span>
    </div>
    <div class="order">
        <input type="text" name="ref-1" class="col1" />
        <input type="text" name="num-1" class="col2" />
        <input type="text" name="color-1" class="col3" />
        <input type="text" name="remark-1" class="col4" />
        <input type="text" name="price-1" class="col5" />
    </div>
    <a id="add" href="#">+</a>
</form>

А это jquery

$("#add").click(function() {     
    $("#order").children(":eq(1)").clone().each(function() {
            var index = $("#order").children().length - 1;
            alert(index);

        $(this).children().find(":input").each(function() {

                alert(index);

                    $(this).attr("[name]", function(i, v) {

                        return v.substr(0, v.lastIndexOf("-") + 1) + index;

                    }).val("");

                });
    }).insertBefore("#add");
});

Мне нужно заменить часть -1 каждого входного имени на увеличенное значение. Но JS никогда не добирается до функции $(this).attr() Когда я запускаю этот код, он не показывает второе окно предупреждения, когда я нажимаю #add

Ответы [ 2 ]

3 голосов
/ 12 апреля 2011

Я не проверил весь ваш код, но есть явная ошибка в том, что

.attr("[name]"

должно быть

.attr("name"

Вам также необходимо удалить.children() из строки

$(this).children().find(":input")

и сделать его

$(this).find(":input")

Это потому, что this относится к элементу div, который содержит входы.Запустив .children(), он возвращает элементы input и, выполнив find(), ничего не вернет, поскольку функция поиска просматривает выбранные элементы, не включая элементы, на которых работает.

обновлен jsfiddle в http://jsfiddle.net/gaby/TpmdP/

0 голосов
/ 12 апреля 2011

Удалите .find (": input") и передайте ": input" в качестве аргумента .children (). children () может извлекать дочерние элементы, даже фильтруя элементы.

...