1

我想更改元素中的名称属性<input>,我在这里有几个名称string[0][],现在我想在单击链接后在它们中添加更改 ‍‍<code>0 并替换1全部0。Jquery怎么样?

演示:http: //jsfiddle.net/2hXk5/

我尝试但不适合我:

<div class="ch">
    <p>
        <input type="checkbox" name="cDA[0][]">
        <input type="checkbox" name="cDA[0][]">
        <input type="checkbox" name="cDA[0][]">
        <input type="checkbox" name="cDA[0][]">
    </p>
    <p>
        <input type="checkbox" name="cFE[0][]">
        <input type="checkbox" name="cFE[0][]">
        <input type="checkbox" name="cFE[0][]">
        <input type="checkbox" name="cFE[0][]">
    </p>
    <p>
        <input type="checkbox" name="cYG[0][]">
        <input type="checkbox" name="cYG[0][]">
        <input type="checkbox" name="cYG[0][]">
        <input type="checkbox" name="cYG[0][]">
    </p>
    <a href="" class="adding">Add</a>
</div>
​


$('a.adding').live('click change', function (e) {
    e.preventDefault();
    $clone = $(this).closest('.ch').clone().insertAfter('.ch');
    $clone.find('input[type="checkbox"]:contains("0")').prop('1');
})​
4

1 回答 1

0

如果我理解正确,您想使用.attr()回调函数:

$('input[type="checkbox"]').attr('name',function(i,str) {
    return str.replace('0','1');
});

更新:这是一个完整的版本,它会做你似乎真正想要的一切。它用于str.match(/\d+/)提取name属性中的第一个数字字符串,将其转换为整数,然后使用下一个整数替换它str.replace。请注意,该insertAfter部分已更新,因此仅在 LAST 之后插入div.ch

$(document).on('click change', 'a.adding', function(e) {
    e.preventDefault();
    $div = $(this).closest('.ch');
    $clone = $div.clone().insertAfter($div);
    $clone.find('input[type="checkbox"]').attr('name', function(i, str) {
        var int = parseInt(str.match(/\d+/)[0],10);
        return str.replace(int, (int+1));
    });
});​

http://jsfiddle.net/mblase75/3SGNw/

于 2012-12-07T14:32:15.820 回答