2011-11-28 145 views
2

我有一個鏈接問題。例如,下面的工作jQuery鏈接 - 爲什麼不能鏈接?

$('#myActivityFeed .bv_default_player_pic').attr("src", url); 
$('#myActivityFeed. bv_default_player_pic').removeClass().addClass('badge'); 

但以下不會:

$('#myActivityFeed .bv_default_player_pic').attr("src", url).removeClass().addClass('badge'); 

據我所知,你應該能夠鏈條這些事件....任何想法,爲什麼我不能?

+0

你想刪除什麼課? –

+1

適合我:http://jsfiddle.net/JSbuu/ –

+1

@Ortal,這應該工作。我最好的猜測是'url'是'undefined',所以對'attr()'的調用被解釋爲它的getter形式,這是不可鏈接的。是這樣嗎? –

回答

2

你的例子應該工作。 Here's a live example。它通過類「bv_default_player_pic」顯示我的Gravatar在其周圍有一個紅色邊框,內部值爲id,值爲「myActivityFeed」。當您單擊該按鈕,它執行代碼(不變,字面複製和粘貼):

$('#myActivityFeed .bv_default_player_pic').attr("src", url).removeClass().addClass('badge'); 

...這臺src的Gravatar,刪除所有類,並增加了類「徽章「(使邊框變黑,用我的CSS)。

工作得很好。問題在於其他地方(是否定義了url?)。

+2

沒有必要,className是可選的,在這種情況下,它刪除所有的類。 [檢查這裏](http://api.jquery.com/removeClass/) – Arindam

+1

@Arindam:謝謝,我不知道,但當我重新閱讀我的答案時,我想「......我想知道是否。 ..「,並有你的評論。固定。 –

+0

對不起,該評論不適合您的帖子。可能是一個頁面刷新問題 – Arindam

-1

attr方法不返回jQuery對象。在這裏檢查。 attr Api

因此,你不能把任何東西放到最後。

removeClass返回一個jQuery對象。請在這裏 removeClass api,對此你可以繼續jQuery的

+2

當你設置屬性爲OP時,它確實返回了jQuery對象:http://api.jquery.com/attr/#attr2(不是我的贊成,謝謝你對我的回答的評論。 ) –

2

的應用方法,根據最新的jQuery版本,沒有必要參數傳遞給removeClass()方法。

This example說明上面的代碼應該是可鏈接的,即使沒有任何參數傳遞給removeClass()也應該可以工作。

來自jQuery removeClass() docs

如果包含類名作爲參數,那麼只有該類將從匹配元素集中移除 。 如果參數中沒有指定類名 ,則所有類都將被刪除

我在代碼中看到的唯一問題是變量url可能是未定義的。

0

removeClass()不帶參數刪除所有類,那麼爲什麼不這樣做:

$('#myActivityFeed .bv_default_player_pic').attr("src", url).attr("class", "badge"); 
+1

雖然這是真的,但它與OP在'attr'調用後發生的鏈接問題無關。 –