使用复选框事件jquery将输入文本元素附加到表

时间:2014-09-17 01:57:10

标签: jquery html forms append

$('#form-upload :checkbox').click(function () {
    var $this = $(this);
    // $this will contain a reference to the checkbox

    if ($this.is(':checked')) {
        // the checkbox was checked
        var sku_td = $('#sku').text()
        var price_td = $('#price').text()
        var quantity_td = $('#quantity').text()

        $('#price').empty()
        $('#quantity').empty()

        var sku = $('<input type="hidden" name="sku[]" value="' + sku_td + '">')
        var price = $('<input type="text" name="price[]" value="' + price_td + '">')
        var quantity = $('<input type="text" name="quantity[]" value="' + quantity_td + '">')

        $('#sku').append(sku)
        $('#price').append(price)
        $('#quantity').append(quantity)

    } else {
        // the checkbox was unchecked

        // undo every you did when you clicked the event

    }
});

http://jsfiddle.net/koL8xe6z/2/

我想将输入元素附加到td,并在选中的行

中添加#id

有没有办法在不为每个复选框创建唯一ID的情况下执行此操作?

我也试过n-child ......

1 个答案:

答案 0 :(得分:1)

这里的主要问题是您有多个具有相同ID的元素。 ID应该是唯一的 - 页面上只有一个元素应该有任何一个特定的ID。

在这种情况下,您应该使用类而不是ID。通过更改id =&#34; ...&#34; to class =&#34; ...&#34;在你的元素上,并使用jQuery中的parent()和siblings()遍历函数,你可以获得所需的结果:http://jsfiddle.net/wbutdz2c/

您在jsfiddle中注意到我提供的文本输入未正确填充现有值(但它们会附加在正确的位置)。要解决此问题,您需要对这些行中的选择器进行类似的更改,以获取现有值:

var sku_td = $('#sku').text()
var price_td = $('#price').text()
var quantity_td = $('#quantity').text()