2011-08-20 53 views
1

当试图看到为什么removeAttr似乎并不总是工作,我试过。为什么JQuery的removeAttr总是不工作?

$("div#mydiv").css('height','200px'); 
$("table").removeAttr("border"); 
$("#mydiv").removeAttr("height"); 

表格边框属性被删除,但不是div高度属性。我需要使用其他建议的方法,如

$("#mydiv").css('height','auto') 

改变它,但实际上并没有删除它。

我很想知道是什么让removeAttr在这种情况下无法正常工作?没有其他的CSS在任何地方。

回答

7

removeAttr指标签的属性。因此,考虑到:

<span title="my-title" id="my-id" style="height: 4px; padding: 200px;" /> 

跨度有三个属性,名称,标识和风格。 removeAttr会让你删除其中的任何一个。但是这里有个技巧,而removeAttr会让你删除样式属性,它只能删除高度和填充,它也不能编辑。

此:

$("#my-id").removeAttr("style"); 

结果:

<!-- not literally, but this is the best way to explain it --> 
<span title="my-title" id="my-id" /> 

css,在另一方面,可以让你直接编辑样式属性。

此:

$("#my-id").css("height", "2px"); 

结果:

<span title="my-title" id="my-id" style="height: 2px; padding: 200px;" /> 

现在,除去只是高度,您可以将空字符串传递给第二个参数。

此:

$("#my-id").css("height", ""); 

结果:

<span title="my-title" id="my-id" style="padding: 200px;" /> 
+0

谢谢。清晰的博览会。 – user858599

4

height是一个内联css样式,这意味着它在style属性中。我认为你可以做到这一点,而不是

$('#mydiv').css('height', ''); 
+0

''

不是内部风格 – genesis

+2

的OP加入'使用的CSS height'()。所以他会得到'

''而不是'
' –

1

这应该是像ID,HREF,残疾人,选择等工作的属性......连的CSS的二手内联是“风格”属性的一部分。您可以删除样式属性,但不能将其放入其中。

您可以尝试$("#mydiv").css('height', '');

我不记得,当你传递一个空字符串的CSS功能会发生什么。

1

使用jQuery的height

$(document).ready(function() { 
    $("div#mydiv").css('height', '200px'); 

    $('#clicker').click(function() { 
     $('#mydiv').height('') 
    }); 
}); 

Example jsFiddle

+0

你是对的高度,但OP想知道为什么removeAttr没有按预期行事。我怀疑他想要做的不仅仅是去除身高。 – BZink