我对jQuery很新,现在只是玩游戏。我正在尝试创建一个点击事件,只要点击它就必须将<select></select>
的属性“禁用”为真/假。
所以它从禁用[true]开始,当点击链接时它将被禁用[false] - 很酷。但是现在我不想用相同的链接将它设置为禁用[true]。
我的代码如下:
$('.enableSelects').click(function(){
if($('select').is(':hidden')){
$('select').attr('disabled', true);
} else {
$('select').attr('disabled', false);
}
});
答案 0 :(得分:3)
关于简短版本:
$('.enableSelects').click(function(){
$('select').prop('disabled', !$('select').prop('disabled'));
});
从:
开始$('select').prop('disabled', !$('select').prop('disabled'));
// | ||__________________________|
// | | |
// | | |_1) this will be evaluated first, resulting
// | | in either 'true' or 'false'
// | |
// | |____2) the boolean value from above will then
// | be inverted, and this new value will be
// | used as the new value for disabled,
// | which is then assigned
// |
// |_____________________3) using the 'prop' method
稍微好一点的版本:
$('.enableSelects').click(function(){
// |-- 1) this function gets called by jQuery
// | automatically. The index and the current
// | value will be passed to it.
// | The return value will be assigned to the
// | property.
// |
$('select').prop('disabled', function (idx, current) {
// we're returning the inverted current value
return !current;
});
});
它与上面基本相同,但我们正在减少必须评估的选择器数量。
答案 1 :(得分:1)
使用:disabled
代替:hidden
,更喜欢.prop()
而不是.attr()
。
此外,当文档中只有一个<select>
时,您当前的方法可以正常工作。当您有多个<select>
元素时,请更改选择器。
答案 2 :(得分:0)