我正在使用Backbone,並決定我想要一種方法來區分綁定的HTML元素和那些沒有綁定的HTML元素。在jQuery中,對所有選擇器使用[name = X]是一個壞主意?
所以我會寫(在HAML):
.container
.title(name='title')
.separator
正如你可以看到很明顯的動態元素是冠軍。
之所以這樣做,是因爲我可以調整風格並重命名類,而不用擔心打破應用程序。這也意味着在模板中我可以告訴動態元素是什麼,而不需要與Backbone View一起來回。
這意味着我使用$('[name=title]', this.el)
從代碼引用此元素。我想知道這是否緩慢,如果在任何地方使用都是一個明顯的問題。我讀過id
是最快的。我正在使用物品清單,因此id
是不現實的。 class
與name
查詢相比如何?此外,如果您有關於跟蹤HTML模板中的動態元素的建議,我很樂意聽到他們的意見。
FYI:
我有這個想法,因爲我原來使用Backbone.ModelBinding插件,用於動態元素
data-bind
屬性,但現在我遠離它。我正在使用CoffeeScript,Backbone和haml_coffee模板。
我也讀過
$(this.el).find('[name=title]')
比向選擇器提供上下文更快。
後續問題:
A convention for indicating whether an HTML element is referenced from JS code
更新jsperf測試所有建議:
謝謝堆。很好的答案! 'w/scope'類與'w/scope'測試相當有說服力。由於文檔的小尺寸,我懷疑「W/O範圍級」無法勝出。 ID與類也很有趣。我想知道是否僅使用ID選擇器會導致任何用戶可感知的加速。在我目前的開發工作流程中,儘管它不是真的可能,但可能使用像Google Closure這樣的JavaScript編譯器。 – vaughan 2012-02-09 04:51:14