2011-09-01 70 views
12

背景Backbone.js如何在不使用ID的情況下追蹤DOM元素?

我一直在使用Backbone.js的一段時間,它的一個方面是讓我印象深刻是如何讓我簡化,抽象和重用DOM元素「若干意見」。我試圖通讀一些註釋過的源代碼,並熟悉JQuery,但對DOM如何在更深層次上工作知之甚少。

問題

如何Backbone.js的領帶DOM元素看法,並沒有指定一個ID,類或其他屬性給他們?

<ul> 
    <li>Item one</li> 
    <li>Item two</li> 
    <li>Item three</li> 
</ul> 

我愛骨幹做到這一點,並想知道如何夠了!

回答

13

在JavaScript中,變量可以將參考(即編程的東西「引用」)保存到DOM的某個元素,該元素只是一個Javascript對象。骨幹確保對於一個視圖來說,至少存在這個元素。舉例來說,在jQuery的,當你指的是第三項列表:

var item3 = $('ul li').eq(2); 

(這是一個零偏移列表中,第一項爲索引0,第三索引2),你現在可以從「項目三」文本更改爲「項目三點一四一五九」與普通的jQuery的DOM操縱:

item3.text("Item three point one four one five nine"); 

即使該列表中的項目沒有任何特定的類或ID屬性。

甲骨幹視圖的el字段包含一個恆定參考其中該視圖使得其所有的東西的父元素。 Backbone使用jQuery delegate事件管理器將通用事件處理程序附加到該常量引用。每當在DOM元素或其任何子元素中發生事件時,委託會捕獲該事件,並引用創建該事件的父el中的特定DOM對象,並且骨幹使用一些相當標準的jQuery魔術將其映射到視圖中的事件處理程序。

這的確是非常酷的東西。

我要補充的是,el參考的「常量」 -ness是,呃,值得商榷。如果您將視圖邏輯附加到現有的HTML元素,則您在視圖的initialize()中確實分配了el一次。 Javascript並不強制任何恆定性的概念,但是如果你確定自己知道自己在做什麼,那麼你只應該直接指定el(即this.el = something())。

+0

將此添加爲您的答案本身的編輯。 – Mrchief

+0

這太棒了,非常感謝你! – cmpolis

相關問題