1

いくつかのツイートがTwitterから動的に取得されるページがあります。それはニュースティッカーのようなものです。ページ全体はここhttp://jsfiddle.net/R6D4R/にあります。

コンテンツはすでにそこにあるため、ページはjsfiddleで機能しますが、ライブサイトのコンテンツは動的にdivに配置されます。ticker()関数は引き続き機能しますが、ifステートメントは有効になりません。誰かが私がこれを修正するのを手伝ってもらえますか?

編集:

申し訳ありませんが、ifステートメントがなぜそこにあるのか明確にしませんでした。この関数はそれ自体で機能しますが、ツイートが1つしかないときに関数を実行したくありません。だから私は持っていif (tickerli.length != 1)ます。おそらく!=1の代わりに>1を使用する必要がありますが、あなたはその考えを理解します

4

2 に答える 2

0

OK、あなたが何を求めているのか混乱していたので、私の答えを完全にやり直しました。

関数に動的に追加された要素を処理するにはticker()、次のように関数を呼び出すたびにセレクターを再評価する必要があります。

$(function(){
    function ticker() {
        var tickerLi = $('.tweet_list li');
        if (tickerLi.length > 1) {
            tickerLi.first().fadeOut(function() {
               $(this).appendTo($('.tweet_list')).fadeIn();
            });
        }
    }

    setInterval(ticker, 2000);
}

これは、動的に追加された要素のイベント処理について支援が必要だと思ったときの以前の回答でした。

将来動的に追加される要素で機能するイベントハンドラーをインストールするには、委任されたイベント処理を使用する必要があります。これを行うには、次を使用できます。

$(static parent selector).on(event, selector of dynamic element, fn);

注:の形式は2つあり.on()、1つは静的で、もう1つは動的です(委任されたイベント処理を使用します)。動的イベント処理を使用するには、.on()ハンドラーを動的ではない親要素にバインドしてから、(.on()動的要素に一致するセレクターの2番目の引数として)渡します。

ツイートテキストのクリックハンドラーのjsFiddleでは、次のように機能します。

$('twitter-container-34').on('click', '.tweet_text', function() {
    // your event handling code here
});

注:jQuery.on()はjQueryv1.7で追加されました。以前のバージョンのjQueryの場合は、を使用します.delegate()

于 2012-08-19T23:44:53.650 に答える
0

http://api.jquery.com/delegate/

それがチケットです!!デリゲートは何度も私の命を救ってくれました。

于 2012-08-19T23:18:45.927 に答える