2012-07-26 21 views
1

我正在使用zepto.js爲我目前的項目,它有相同的removeAttr()方法作爲jQuery的。removeAttr()沒有應用?

我將margin-top應用到一堆元素 - 工作正常。

var $apply = $('aside[role="sub"], aside[role="event-info"], aside[role="attend"]'); 
$apply.css('margin-top', '100px'); //works fine 

但是我還需要在resize-event中再次刪除它。

if ($(window).width() <= 984) { 
    //$apply.removeAttr('style'); //doesn't take effect 
    $apply.css('margin-top', '0'); //works fine 
    console.log('< 984');  
} 

,所以我能夠設置margin-top0但不能完全刪除從選擇樣式屬性。

任何想法爲什麼?我沒有得到任何錯誤,只是沒有生效。

+3

無法刪除DOM元素的 「風格」 屬性。 (這是一個屬性,而不是一個屬性。) – Pointy 2012-07-26 14:22:11

回答

3

刪除它的正確方法是使用.css時未設置值。

$apply.css('margin-top', ''); // remove property 

當一個屬性的值是空的,該屬性被刪除。

閱讀全文here

+1

我認爲如果在另一個被明確設置之前存在餘量,那麼它需要回到這個位置。我相信上面的代碼不會那樣做(雖然我可能是錯的)... – Chris 2012-07-26 14:39:23

+0

是的,這只是刪除屬性,就像請求的問題一樣。恢復到以前的值將是一個不同的情況。 – ericosg 2012-07-26 14:53:16

3

http://api.jquery.com/css/

的樣式屬性的值設置爲空字符串 - 例如如果已經通過jQuery的.css()方法直接應用,那麼無論是在HTML樣式 屬性中,該屬性都可以從元素 中移除該屬性( $)('#mydiv').css('color','') ,或者通過直接DOM 操作樣式屬性。 但是,它不會刪除樣式表或 元素中已應用CSS規則的 樣式。

所以,你可以使用$apply.css('margin-top', '')刪除margin-top風格。

使用.removeClass()刪除元素中的所有樣式。

3

我會建議創建一個CSS類,而不是您添加和刪除。 這樣,您可以輕鬆修改一個位置的邊距值,而不必在多個位置進行更改。

CSS:

.myMargin { margin-top : 100px; } 

JS:

var $apply = $('aside[role="sub"], aside[role="event-info"], aside[role="attend"]'); 
$apply.addClass("myMargin"); 

在resize事件:

if ($(window).width() <= 984) { 
    $apply.removeClass("myMargin"); 
    console.log('< 984');  
}