назначить несколько атрибутов элемента с помощью .each? - PullRequest
2 голосов
/ 12 октября 2011

Итак, у меня есть следующая таблица, и я хотел бы установить для всех атрибутов имени новое значение, когда добавляю строку в таблицу. (Вы, наверное, догадались: я использую кнопки для добавления и удаления строк и вычисляю новый атрибут имени на основе индекса строки).

<table id="orderstable" >
            <tbody>
    <tr>
        <td align="top"><img src="/images/images/add_button_sm.gif" id="add_" align="top" border="0">
                <img src="/images/images/delete_button_sm.gif" id="del_" border="0">
        </td>
        <td><input name="orderBoxes[0].A" size="3" value="0.0" type="text"></td>
        <td><input name="orderBoxes[0].B" size="3" value="0.0" type="text"></td>
        <td><input name="orderBoxes[0].C" size="3" value="0.0" type="text"></td>
        <td><select name="orderBoxes[0].D">
            <option value="fifty">50</option>
            <option value="oneHundred" selected="selected">100</option>
            <option value="twoHundred">200</option>
            <option value="threeHundred">300</option></select>
        </td>
    </tr>
            </tbody>
</table>

Я пытался использовать .each, чтобы получить все элементы, а затем получить атрибут input.name attribbute .... но я не могу заставить его работать. Какие-нибудь мысли? Мой код может быть не самым эффективным ... Я все еще новичок:

$("#orderstable > tbody > tr > td > img[id=add_]").click( function(event){
            var row = $(this).closest("tr").get(0);
            var rowCopy=$(row).clone(true);
            $(row).closest("tbody").append(rowCopy);

            $('#orderstable tbody>tr:last>td').each(function(){
                            $(this.input).attr(name);
                            }).val = "test";
            row.className+="add_";

Ответы [ 3 ]

10 голосов
/ 12 октября 2011

Это будет захватывать последнюю строку и все элементы формы ввода. Тогда вы можете просто установить name через $(this).attr('name')

$('#orderstable tr:last td :input').each(function(){
   $(this).attr('name', 'setyournamehere')
})
0 голосов
/ 12 октября 2011

В вашей функции .each вам нужно использовать аргументы, чтобы получить элемент и найти входные данные:

$("#orderstable > tbody > tr > td > img[id=add_]").click( function(event){
        var row = $(this).closest("tr").get(0);
        var rowCopy=$(row).clone(true);
        $(row).closest("tbody").append(rowCopy);

        $('#orderstable tbody>tr:last>td :input').each(function(i, e){
                var n = $(e).attr('name');
            alert(n);
                        }).val = "test";
        row.className+="add_";
});

http://jsfiddle.net/swatkins/LFvwh/

0 голосов
/ 12 октября 2011

Ваш селектор неверен.Ваша таблица не имеет идентификатора 'orderstable' и не имеет <tbody>.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...