2009-08-25 116 views
0

我展示這樣jQuery的工具提示:添加/刪除與顯示/隱藏

$(clickedElement).append('<span id="activeHelpTip" class="helpTip">Loading help...</span>'); 
$('#activeHelpTip').remove(); 

提示一位同事建議,在頁面加載我追加,能見度沒有一切可能的工具提示,並顯示/隱藏在其中需求。

有什麼區別?誰在乎?

編輯:是否與ajax服務提供工具提示有關?

回答

1

撇開可維護性 - 您正在做的事情會很好地遵循最佳實踐,以便嚴格篩選選擇器。所以沒有性能原因需要改變。

從可維護性的角度來看,它絕對可以改進,使提示列表更加可編輯 - 讓文字遠離標記。

+0

工具提示是由ajax服務提供的嗎? – 2009-08-25 17:53:24

+0

並非如此 - 您的選擇器仍然在正確的位置進行狹義注入並且寫得很好。我可能會連線ajax調用回發以將內容追加到所選元素上。 – 2009-09-14 18:33:01

1

我想說,按照你的同事談論的方式來做這件事比較容易,也更易於維護,因爲這通常會導致工具提示與HTML中引用的元素相鄰,而不是在腳本在某處,而你直接用HTML代替JS字符串寫它們。

我不認爲要麼比另一個要明顯更快,要麼使用有意義的不同數量的內存。

重新編輯:如果您的工具提示目前正在通過Ajax進行提取,那麼自然而然,如果它們被預加載到頁面中,它們會快得多。

+0

正如工具提示旁邊的呈現HTML中的元素。您是否建議我進入HTML和c/p' 2009-08-25 17:49:05

+0

不是每個元素都有自己的工具提示文本嗎?如果你有30個元素都使用相同的工具提示,當然你不應該做30個單獨的重複工具提示跨度。如果事情真的如此,我可能會繼續保持你的工作狀態,因爲它已經在工作,但如果你真的想要使用show/hide方法,那麼你可以爲所有30個元素提供一個常見的工具提示範圍,例如,包含30個元素的某個部分的頂部,並在顯示時將該跨度重新定位到光標。 – chaos 2009-08-25 17:54:20

0

這只是一個更乾淨,更簡單的方法來做到這一點。此外,您可以使用不同的方法來顯示/隱藏隱藏元素上的fadeIn()/ fadeOut(),slideDown()/ slideUp等提示。

+0

幫助我理解它將如何更清潔;毫不猶豫地改變的唯一原因是這種方式似乎更簡單。 – 2009-08-25 17:51:11

+0

你沒有提到你有30個這樣的其他元素。在這種情況下,我建議使用絕對的工具提示元素,並在顯示/隱藏之前將該元素設置爲光標位置(因爲已經提示混亂)。 – Technowise 2009-08-25 18:16:14

0

由於您已經在使用jQuery,因此您應該查看Tooltip plugin。它使得顯示工具提示非常簡單,而且非常靈活。

1

我可以考慮使用顯示和隱藏而不是追加和刪除的最大原因是,當您使用.remove()時,它將銷燬所有要移除的DOM對象上的事件處理程序並緩存$.data

jQuery docs

移除從 DOM所有匹配的元素。這不會從 jQuery對象中刪除它們,從而允許您進一步使用 匹配的元素。注意 此函數以1.2.2 開頭也將刪除所有事件處理程序 和內部緩存的數據。所以: