为简洁起见,以下代码是我正在使用的代码的略微截断版本:希望它足以说明问题。如果有帮助,我可以设置一个 jsfiddle 吗?
无论如何:我正在创建一个 jquery 对象数组,然后过滤掉其值在一个已选择值数组中的任何值,然后尝试将结果附加到我的选择框。
我认为问题在于我从 filter() 操作中得到了什么。它显示为一个对象数组,但每个对象都以“e.fn.e.init[1]”开头。当我尝试将该对象数组附加到选择框时,我得到NOT_FOUND_ERR: DOM Exception 8
var selected_roles = [2,4],
all_roles = [];
// these lines generated from PHP
all_roles.push( $('<option value="3">Doctor</option>') );
all_roles.push( $('<option value="4">Dentist</option>') );
all_roles.push( $('<option value="2">Biscuit Designer</option>') );
all_roles.push( $('<option value="7">International Playboy</option>') );
function getAvailableRoleOptions(){
var out = all_roles;
return out.filter( function(element) {
return $.inArray( parseInt( $(element).attr('value') ), selected_roles ) === -1;
});
}
$options = getAvailableRoleOptions();
$('#job_select').empty().append( $options );
什么是过滤功能返回给我?我是否需要在某处使用 get() ,如果需要,在哪里?我什至可以做我想做的事吗?我对这一切都错了吗?:)
谢谢 :)