为什么DIV不跟随父元素'
Why DIV does not follow the parent's attributes
考虑下面的代码片段
<fieldset id="fieldset">
<input id="first" />
<div id="second" />
</fieldset>
和
$('#fieldset').attr('disabled', 'disabled')
console.log($('#first').is(':disabled'))
console.log($('#second').is(':disabled'))
,输出为
true
false
我注意到输入标签跟随父属性,我认为所有的标签都有小部件跟随,但其他如div,a,span或..没有。
为什么?
如果我想让div元素跟随父元素的属性我该怎么做?
说明:
如果窗体控件的disabled属性被设置,或者如果窗体控件是fieldset元素的后代,而该fieldset元素的disabled属性被设置,并且不是该fieldset元素的第一个legend元素子元素的后代(如果有的话),则窗体控件将被禁用。
div没有被禁用,因为它不是一个表单控件。它不能被禁用,因为这样就没有意义了。
因此,如果您出于某种原因想要检查某个元素所在的fieldset
是否被禁用,您可以为此创建一个自定义函数:
$.fn.isInDisabled = function () {
var x;
if($(this).is('fieldset')) {
// If this is a fieldset, use it.
x = $(this);
}
else {
// Otherwise use the closest ancestor that is.
x = $(this).parents('fieldset');
// Return true if we are not in a fieldset.
if(!x.length) return true;
}
// Return wheater x is disabled or not.
return x.is(':disabled');
}
或者,如果您不介意我们不在字段集中的情况,您可以使用:
$.fn.isInDisabled = function () {
return ($(this).is('fieldset') ? $(this) : $(this).parents('fieldset')).is(':disabled');
}
如果不在字段集中,将返回false
相关文章:
- 如何在不影响其他元素的情况下扩展DIV
- DIV怎么能像Javascript中的另一个元素一样工作呢
- 循环对象时更新页面上的DIV元素
- 在DIV中动态插入HTML并访问新元素
- 单击javascript按钮显示/隐藏Div元素
- 如何确定滚动DIV中的可见DOM元素
- 范围和列表元素在 DIV 中换行
- Javascript 在提交时禁用 Div 元素
- 在 AJAX 调用中发送 DIV 元素的 ID
- 在具有特定ID的DIV中使用JavaScript动态添加HTML元素
- 使用JavaScript函数添加多个DIV元素
- 如果在Div元素外部单击,请关闭该元素
- 使用jQuery将列表中的元素集封装在DIV中
- 如何使用CSS3/JavaScript缩放DIV元素及其子元素以适应父元素
- 如何将SVG元素和Div放入图像中,以便用户可以下载
- 将DIV元素绑定到溢出滚动条
- 如何切换DIV元素的可见性
- jQuery - 将元素拖入 DIV / 或可排序元素
- Div在浏览器的检查元素中很暗,无法检索内容
- JavaScript/jQuery:如何获得元素(DIV)旋转后的实际原始位置