我有一个带有按钮的表,该按钮通过克隆最后一行在底部添加一行。每行包含一个<select>
具有不同名称的(0-9),所有<select>
对象都具有.variable_priority
该类。当按下按钮时,该行被成功复制,并且我设法正确地更改了名称(10、11、12等),并且该行获得了相同的类,因为它是完美的副本。
但是,当我执行以下功能时,克隆表行会遇到问题:
$('.variable_priority').change(function() {
var selections = new Array();
$(".variable_priority").each(function() {
selections.push($(this).find('option:selected').val());
});
// Iterating on Options of Select
$('.variable_priority').children('option').each(function() {
$(this).removeAttr('disabled');
if($.inArray($(this).val(), selections) !== -1){
if($(this).val() != 0){
if($(this).is(':selected')){
// nothing
} else {
$(this).attr('disabled', true);
}
}
}
});
});
该函数应在每次更改a的选定选项时<select>
运行,尽管它仅与10个原始选项一起运行。当我更改克隆行中的选项时,不会执行此功能。但是,如果我更改其中一个原始值,则该函数将运行,并且还将克隆行中的值添加到selections
数组中。
因此,出于某种原因,代码会识别出克隆具有相同的类,但在更改其值时不会运行。
编辑:上面的代码的简短描述;如果我更改a的选定值<select>
,则该函数会将所有选定的选项添加到数组中,并禁用selects中的每个选定选项,但在选定值本身的框中(如果我在第一个框中选择“ 2”,在所有其他框中禁用“ 2”。
因为你的select
元素是动态的(它被添加到DOM后的初始页面加载,还是要具体;后最初的事件处理程序附件),你将需要委派你的change
事件处理程序:
$(document).on('change', '.variable_priority', function() {
});
document
不过,您不想使用它,而是将事件处理程序附加到到最接近的静态元素.variable_priority
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句