2011-08-20 36 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