我想创建一个脚本,在检查所需的复选框时禁用select表单元素。由于我将会有更多次使用它,我想把它作为一个以目标选择id作为参数的函数。问题是,当我将id作为参数传递时,此函数不起作用。相反,它似乎适用于硬编码的id。
<select id="worldSelect" class="select" name="world">
<input id="worldcb" type="checkbox" checked="yes" value="any" name="world">
function toggleSelection(id){
var el = '#' + id;
if (this.checked) {
$(el).attr('disabled', 'disabled');
} else {
$(el).removeAttr('disabled');
}
}
$(function() {
toggleSelection('worldSelect');
$('#worldcb').click(toggleSelection);
});
答案 0 :(得分:2)
您不能两次调用相同的函数并期望函数记住id变量。
但是你可以这样做:
function toggleSelection(e){
var el = '#' + e.data;
console.log(arguments);
if (this.checked) {
$(el).attr('disabled', 'disabled');
} else {
$(el).removeAttr('disabled');
}
}
$(function() {
$('#worldcb').click('worldSelect', toggleSelection);
});
答案 1 :(得分:1)
怎么样:
$('#worldcb').click(function() {
toggleSelection('worldSelect', $(this).is(':checked'));
});
function toggleSelection(sel, chk) {
$('#' + sel).attr('disabled', chk);
}
<强> jsFiddle example 强>
toggleSelection()函数有两个参数,sel - 选择框的ID和chk,即要使用的复选框。