2013-07-12 90 views
1

我正在嘗試做一些看似簡單的事情 - 向活動主幹元素添加一個類。我想使用的代碼是:

this.$el.addClass('classIWant'); 

然而,這不起作用所有的時間。有時似乎,但不是全部。但是,這總是有效。

var id = this.$el.attr('id'); 

$('#' + id).addClass('classIWant'); 

顯然我不想第二個例子,因爲它很大程度上依賴於HTML和DOM。有沒有任何理由爲什麼第一個不應該工作,或者我錯過了別的東西?

+0

我看不到第二個應該工作,而第一個不應該工作。 –

+5

console.log()這個指的是什麼。 –

+0

你確定你用正確的上下文('this'變量)調用容器方法嗎? – gustavohenke

回答

1

似乎this指向有問題。如果您在功能myFunc運行此代碼,然後只需添加到initialize下一行:

_.bindAll(this, 'myFunc'); 

而且隨着你第一種方法,this.$el.addClass('classYouWant')了。

+0

如果'this'指向錯誤,爲什麼'this。$ el.attr('id');'工作? – Loamhoof

+0

@Loamhoof你是對的,我的假設是錯誤的。 –

0

此代碼應工作:

this.$el.addClass('classIWant'); 

,但只有當它是你的OnRender中存在的()函數或在之後的OnRender稱呼)的任何功能(是。如果你在初始化函數中有這個代碼,那麼它不會工作,因爲該視圖的dom尚未生成