我正在尝试创建更具动态性的产品和数量拣选方法。所以当你选择一些东西时,它会创建一个新的选择行..当你选择它时,它会再次创建一个新的行,一遍又一遍。
基本上可以在投票系统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端也必须这样做。这不是我想要使用的解决方案。
答案 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! 强>