2012-01-16 12 views
0

こんにちは私はjQueryを使い始めていますが、div内のコンテンツを選択しようとすると、一部のメールが選択されませんでしたか?私はSafariのコンソールを使ってjQueryコードを実行しています。 .text()で希望の結果が得られますが、なぜ.html()は機能しませんか?jQuery .html()で一部のメールが選択されていませんか?

jQueryの

$("input[type=checkbox]:checked").parents('.organizer_listing').find('.organizer_listing_contact_email') 

結果

[ 
<div class=​"organizer_listing_contact_email">​[email protected]​</div>​ 
, 
<div class=​"organizer_listing_contact_email">[email protected]​</div>​ 
, 
<div class=​"organizer_listing_contact_email">[email protected]​</div>​ 
] 

jQueryの

$("input[type=checkbox]:checked").parents('.organizer_listing').find('.organizer_listing_contact_email').html() 

結果

"[email protected]" 
+1

の.htmlを(使用する場合があります。それは文字列の配列を返すことができません – Mikhail

+1

ドキュメントはあなたの友人です:http://api.jquery.com/html/ 'html()': 'Description:一致する要素のセットの最初の要素のHTMLコンテンツを取得します。 ' – artlung

答えて

3

アクセサメソッドを(そのほとんどはとにかくあまりにミューテータあってもよいが、)のみ、結果セットの最初の項目に取り組みます。

つまり、.html()は、.attr('href')が最初のアイテムのhref属性を与えるように、セット内の最初のアイテムのhtmlを提供します。

代わりに、あなただけの文字列を返すことができます).map

...find('.organizer_listing_contact_email').map(function() { 
    return $(this).html(); 
}).get(); 
+0

+1、これははるかに良い答えです。 :-) – PPvG

2

.find()リターンコレクションのjQueryオブジェクトの。そのコレクションの要素に対して繰り返し処理が必要です。あなたはそれを行うために.each()を使用することができます。

var $emails = $("input[type=checkbox]:checked").parents('.organizer_listing').find('.organizer_listing_contact_email'); 

$emails.each(function() { 
    console.log($(this).text()); 
}); 
関連する問題