2011-06-24 10 views
0

基本的にjQueryでは、つぶやきを含む3つの段落をループしようとしています。 3段落はすべて.tweet-textのクラスです。jQuery、段落をループしてテキストを取得する

何らかの理由で、次のコードでは、$ test2が最初のツイートのテキストに正しく設定されますが、各ループでは、設定しようとするとjsがクラッシュしますstr。どうしてこれなの?

var $tweets = $(".sidebar-tweet .tweet-text"); 
    var $test2 = $tweets.text(); 
    alert($test2); 
    $tweets.each(function(i, $tweet){ 
     var str = $tweet.text(); 
     alert(str); 
    }); 

私はFirebugでこれをデバッグしようとしていましたが、役に立たないです。助けてくれてありがとう。 $tweetは通常のJavaScriptオブジェクトではなく、jQueryオブジェクトとなりますので

+0

は、あなたが(.textセクション以外.innerHTMLまたは何か他のものを使用してみましたが) –

答えて

1
var $tweets = $(".sidebar-tweet .tweet-text"); 

     $tweets.each(function(i, current){ 
      var str = $(current).text(); 
      alert(str); 
     }); 

問題は、現在のオブジェクトがjQueryオブジェクトをdefaltことではないことだった、あなたは$(現在の)それをラップする必要があります... jqueryのメソッドを使用します

1

ではなく

var str = $(this).text(); 
+0

= $($ tweet).text(); 'もし彼の表記法を守らなければならないのですか? –

+0

@ josh.trow彼が提供しているパラメータを使用する勅令に従うことを本当に悪く望むのであれば、あなたは正しいと思いますが、$(これ)は全く同じです。 –

+0

はい、あなたの答えが元々述べられているように、動作しませんでした。私は変数を選択するのではなく、それを動作させる方法についてコメントしていました。 –

1

これを試してみてください。あなたは好きで、それをラップする必要があります:

var str = $($tweet).text(); 
1

.eachメソッドの2番目の引数はjqueryオブジェクトではなく、実際のDOM要素です。

だから、再びjQueryの中でそれをラップする必要があります。..

var $tweets = $(".sidebar-tweet .tweet-text"); 
var $test2 = $tweets.text(); 
alert($test2); 
$tweets.each(function(i, tweet){ 
    var str = $(tweet).text(); 
    alert(str); 
}); 

デモ:技術的にそれは `のvar strのあるべきhttp://jsfiddle.net/gaby/xjmZy/

関連する問題