如何在更改上一个当前选择时创建新的选择行?

时间:2012-02-06 20:06:52

标签: jquery select

我正在尝试创建更具动态性的产品和数量拣选方法。所以当你选择一些东西时,它会创建一个新的选择行..当你选择它时,它会再次创建一个新的行,一遍又一遍。

基本上可以在投票系统FaceBook中找到相同的方法。

我尝试了很多不同的变体,但它并没有像预期的那样起作用。第一个代码在开始时创建了一行,但在此之后停止了工作。当前代码创建了新行,但只有在第一个行被更改时才会生成..它不会动态地计算tr:last,而是完全没有想法。

这是我到目前为止所拥有的:

create_new_row = function () {
    var table = $('#products_table'),
        last_row = $(table).find('tr:last')
        last_row_select = $(last_row).find('select'),
        new_row = $(last_row).clone();

    // This part is brutal, could be optimized, but not a priority
    $(new_row).find('option:selected').removeAttr('selected');
    $(new_row).find('input[type="text"]').val(1);
    $(new_row).appendTo($(table));
};

$('#products_table tr:last select').change(function () {
    create_new_row();
});

[View output]

我的最后一招可能是,我将使用设置正确最后一行的类。但这意味着,当表单发布时,PHP端也必须这样做。这不是我想要使用的解决方案。

1 个答案:

答案 0 :(得分:3)

使用.live()或者如果您拥有更新版本的jQuery,请使用.on(我将发布一个带有.live()的示例,因为它适用于两者)

create_new_row = function () {
    var table = $('#products_table'),
        last_row = $(table).find('tr:last')
        last_row_select = $(last_row).find('select'),
        new_row = $(last_row).clone();

    // This part is brutal, could be optimized, but not a priority
    $(new_row).find('option:selected').removeAttr('selected');
    $(new_row).find('input[type="text"]').val(1);
    $(new_row).appendTo($(table));
};

$('#products_table tr:last select').live('change', function () {
    create_new_row();
});

<强> Working Example here!