为什么JQuery的removeAttr始终不起作用?

时间:2011-08-20 15:06:46

标签: jquery

当试图了解为什么removeAttr似乎总是起作用我尝试了。

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

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

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

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

我很想知道是什么让removeAttr在这种情况下不起作用?在任何地方都没有其他的CSS。

4 个答案:

答案 0 :(得分:7)

removeAttr 是指代码的属性。所以,给定:

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

该跨度有三个属性,title,id和style。 removeAttr将允许您删除任何这些。但是这里有诀窍,而removeAttr会让你删除style属性,它只能删除高度和填充,它也无法编辑。

此:

$("#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;" />

答案 1 :(得分:4)

height是内联css样式,这意味着它位于style属性中。我想你可以这样做

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

答案 2 :(得分:1)

这应该适用于id,href,disabled,selected等属性......即使是内联使用的css也是“style”属性的一部分。您可以删除样式属性,但不能删除其中的部分。

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

我不记得在css函数中传递空字符串时会发生什么。

答案 3 :(得分:1)

使用jQuery的height

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

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

Example jsFiddle