2012-03-09 3 views
1

は、

template.find('.userPhoto img').error(function() { 
    $(this)[0].src = '/images/default.png'; 
}).attr('src', image); 

私は、個々の要素を参照するために$(この)を期待していたが、そうではありません。代わりに、ラップされたセットを参照しています...なぜそれを見つけることができますか?

ありがとうございます!

+2

これは、$(...)が意味するものです。 – asawyer

+7

FWIW、 '$(this)[0] === this' – Alnitak

+1

あなたはそれがセットであることをどのように知っていますか? '' [0] 'は、最初の要素ではなく、jQueryオブジェクトのDOM要素を扱います。 –

答えて

3

を持つことができるからだと思いますか?

誰かがそれ以上良く分からなかったからです。これに関連して

あなたは、元のDOM要素をしたい場合は、ちょうどあなたがその要素のjQueryのメソッドを呼び出すしたい場合は、$(this)を使用し、一方this

を使用しています。あなたがやっているすべてのDOM要素のプロパティを設定されているので、あなたが元を使用する必要があります

template.find('.userPhoto img').error(function() { 
    this.src = '/images/default.png'; 
}).attr('src', image); 
0

私はあなたが選択する方法を適用し、$(this)ではなく、個々の要素のラップセットを参照しているのはなぜ統一API

$("a").each(function(){ 
    $(this).each(...).click(...); 
}); 
$("a").click(...); 
0

それは予想される動作ですが、jQueryのはどのように動作するかです。

$()は、DOM要素のセットであるjQueryオブジェクト(配列になりすます)に変換します。

答えでは、$()を使用する必要はありません。

thisは、あなたが望む要素である、ので、あなただけ行うことができます。

template.find('.userPhoto img').error(function() { 
    this.src = '/images/default.png'; 
}).attr('src', image); 

それともあなたがこれを行うことができます:

template.find('.userPhoto img').error(function() { 
    $(this).attr('src', '/images/default.png';); 
}).attr('src', image); 

$(this).attr('src'は、あなたのケース内のすべての要素(の属性を変更します、1つ)。

関連する問題