2011-11-03 38 views
1

我正在使用this plugin作爲工具提示。它使用title屬性作爲工具提示文本佔位符。有太多的工具提示文字,我想把它們全部放在一個地方,以便輕鬆維護或更新。什麼可能是一個好方法?如何從HTML文件中分離出工具提示文本

我的想法是建立在js文件的地圖,如:

var tooltiptext = 
[{ 
"label_1": "description for label 1", 
"label_2": "description for label 2", 
"label_3": "description for label 3", 
... 
}] 

而且使用jQuery這些標題內容$(document).ready添加到頁面中。 這是個好主意嗎?

回答

2

你不需要方括號。我們假設對象中的label表示元素的ID。然後使用:

var tooltiptext = { 
    "label_1": "description for label 1", 
    "label_2": "description for label 2", 
    "label_3": "description for label 3", 
    //.... 
    "label_n": "description for label n" 
}; 
$.each(tooltiptext, function(label, title){ 
    $("#" + label).attr("title", title).tooltip(); 
}); 

在循環中,你設置元素的title屬性。然後,調用tooltip

1

我想將您從您選擇的路徑轉移出去,如果可以的話。

把工具提示到HTML本身作爲一個title屬性是因爲要好得多......

  1. 它將對你有意義的開發商 - 文本是它會用到,所以你可以看到正在使用的上下文。如果您有一個包含這些資源的JavaScript文件,您將依賴標籤告訴您文本正在被使用的位置,隨着列表的增長,這將變得很麻煩。

  2. 它只會工作!如果JavaScript被禁用,或者設備不運行JavaScript,或者JavaScript中有錯誤,title屬性仍然會導致顯示工具提示 - 它看起來可能不像一個很酷的JavaScript工具提示,但可以保證您的所有用戶都可以獲取工具提示中的信息。

  3. 稍後,如果您支持多種語言或從內容管理系統獲取內容,則需要通過服務器注入文本,而不是通過JavaScript註釋 - 將文本放置在標題標記中,可用於您的JavaScript,因此您不再需要讓JavaScript與內容管理系統保持同步,並且不需要獲取JavaScript文本資源的翻譯版本。

我希望這可以幫助您做出決定。

+0

我同意你的觀點。但是,這是一個django項目,標籤是動態填充的。這就是說,在模板中,它是一行代碼:{%for label_name in labels%}。你會在這種情況下做什麼? – Stan

+0

我正在寫很多使用MVC的網站,並且我將資源寫入HTML屬性,因爲我根據用戶位置本地化語言 - 這可能對您不適用,因此您必須作出判斷呼叫。 – Fenton

相關問題