2012-05-31 48 views
4

我在尋找建議或指向最佳實踐的建議或指針,以便將用於瀏覽器樣式的類從用於dom操作的類中分離出來。從dom操作中分離樣式的策略

更具體地說,我們正在創建一個單頁面的backbone.js web應用程序,該應用程序廣泛地利用jQuery動態更新頁面元素(添加,隱藏和附加新內容到頁面)。我們遇到的問題似乎源於類屬性的重載 - 它用於樣式表示,AND用於通過jQuery識別GUI應用程序邏輯的頁面元素。這在修改樣式時會導致問題,因爲沒有明顯的方法可以知道底層javascript應用程序是否需要給定的類(或DOM元素)。

換句話說,如果有人天真地改變或移除標籤上的類,假設他們只是修改表示,它會中斷應用程序。我正在尋找一種方法來區分這些問題 - 將用於jQuery選擇器的類與用於CSS樣式的類分開。我假設這是一個'解決的問題',因爲我們顯然不是第一個編寫JavaScript重型Web應用程序。有沒有一個標準的方法來處理這個問題?我錯過了明顯的東西嗎?

回答

2

這樣做的好方法可能不是使用css classname來綁定JavaScript邏輯。 HTML5引入了一種爲標籤添加自定義用戶定義屬性的方法。要做到這一點,你只需要添加屬性標籤,但用「數據」前綴開始它的名字。例如:

<a href="#" data-role="link-to-author" data-value="John Doe">John Doe</a> 

jQuery的,從開始1.4.3,有積聚的方法使用。數據()函數這樣的屬性的工作。您可以在更多的細節在這裏讀到它:http://api.jquery.com/data/#data-html5

如果有必要爲您的應用程序使用的類名作爲指針出於某種原因,那麼你就可以做出以下約定:

類別名稱開頭「js-」前綴僅用於購買腳本來識別html元素,並且不能將它們用於樣式。所以這樣你的元素將有每個元素的多個類(有的爲造型,有的邏輯):

<a href="#" class="author js-link-to-author">John Doe</a> 

這樣的類沒有前綴可以無擔憂被刪除,你可以相當肯定,你將打破如果您刪除帶有前綴的類,則會出現問題