这是我的代码:
$("#product1 :checkbox").click(function(){
$(this)
.closest('tr') // Find the parent row.
.find(":input[type='text']") // Find text elements in that row.
.attr('disabled',false).toggleClass('disabled') // Enable them.
.end() // Go back to the row.
.siblings() // Get its siblings
.find(":input[type='text']") // Find text elements in those rows.
.attr('disabled',true).removeClass('disabled'); // Disable them.
});
如何切换.attr('disabled',false);
?
我似乎无法在Google上找到它。
答案 0 :(得分:398)
$('#el').prop('disabled', function(i, v) { return !v; });
.prop()
方法接受两个参数:
所以在这种情况下,我使用了一个为索引(i)和当前值(v)提供的函数,然后我返回了当前值的反面,因此属性状态被反转。
答案 1 :(得分:101)
我猜以获得完整的浏览器可比性disabled
应由值disabled
设置或删除!
这是我刚刚制作的一个小插件:
(function($) {
$.fn.toggleDisabled = function() {
return this.each(function() {
var $this = $(this);
if ($this.attr('disabled')) $this.removeAttr('disabled');
else $this.attr('disabled', 'disabled');
});
};
})(jQuery);
编辑:更新示例链接/代码以保持可链接性!
编辑2:
基于@lonesomeday评论,这是一个增强版本:
(function($) {
$.fn.toggleDisabled = function(){
return this.each(function(){
this.disabled = !this.disabled;
});
};
})(jQuery);
答案 2 :(得分:19)
$('#checkbox').click(function(){ $('#submit').attr('disabled', !$(this).attr('checked')); });
答案 3 :(得分:2)
过了一会儿,感谢@arne,我创建了这个类似的小函数来处理输入应该被禁用和隐藏,或者启用和显示的位置:
function toggleInputState(el, on) {
// 'on' = true(visible) or false(hidden)
// If a field is to be shown, enable it; if hidden, disable it.
// Disabling will prevent the field's value from being submitted
$(el).prop('disabled', !on).toggle(on);
}
然后使用以下命令切换jQuery对象(例如$('input [name =“something”]')):
toggleInputState(myElement, myBoolean)
答案 4 :(得分:2)
另一个简单的选项,点击复选框即可更新。
HTML:
<input type="checkbox" id="checkbox/>
<input disabled type="submit" id="item"/>
jQuery的:
$('#checkbox').click(function() {
if (this.checked) {
$('#item').prop('disabled', false); // If checked enable item
} else {
$('#item').prop('disabled', true); // If checked disable item
}
});
行动中:link
答案 5 :(得分:1)
使用attr
的回调语法
$("#product1 :checkbox").click(function(){
$(this)
.closest('tr') // find the parent row
.find(":input[type='text']") // find text elements in that row
.attr('disabled',function(idx, oldAttr) {
return !oldAttr; // invert disabled value
})
.toggleClass('disabled') // enable them
.end() // go back to the row
.siblings() // get its siblings
.find(":input[type='text']") // find text elements in those rows
.attr('disabled',function(idx, oldAttr) {
return !oldAttr; // invert disabled value
})
.removeClass('disabled'); // disable them
});