Request.HTMLコンテンツのmootoolsツールのヒントが表示されない

Request.HTMLにヒントを追加する際に問題があります 関数。私は30秒ごとに内容を更新するdivを持っています。 返されるコンテンツには、クラス名を持つ一連のdivがあります ".liveReader"

ここで私はコンテンツを開始する必要があるJSです

            window.addEvent('domready', initLiveContent);

            function initLiveContent()
            {
                    var tips = new Tips('.liveReader');
                    (function() { refreshPanel() }).periodical(30000);
                    refreshPanel();
            }

            function refreshPanel()
            {
                    var myRequest = new Request.HTML({
                             url: '/inc/liveFeed.aspx',
                             update: $('liveContent'),
                             method: 'get',
                             onComplete: function() {
                                 tips.attach('.liveReader');
                             }
                    });
                    myRequest.send();
            }

だから、HTMLは

<div id="liveContent">
    <div id="item1" class="liveReader" title="item 1">

Text 1

</div> <div id="item2" class="liveReader" title="item 2">

Text 2

</div> </div>

しかし、私が見ているのは、通常のツールチップのタイトルです!何か案は?!!

1

1 答え

あなたの問題は可変スコープです。

onComplete ハンドラは tips への参照を使用しますが、この変数は initLiveContent 関数のローカルです。したがって、 onComplete 呼び出しは失敗します。

だから、最初のヒント(意図はない):常に実際のデバッガから始まり、すべての例外を壊すように設定します。それ以外の場合、エラー( "未定義変数 tips ")はコールバック内からスローされるため、標準コンソールには表示されません。

次に、あなたのコードを修正する2つの方法:

  1. Make tips a shared variable. You might for example declare it in a function that would be the second argument to your window.addEvent call, and then reference it in both initLiveContent and your onComplete callback.

  2. Much more Mooish  :)  Use Element storage to dynamically retrieve your Tips instance from your updated container. That is:

    function initLiveContent()
    {
        var tips = new Tips('.liveReader');
           //… your previous code …
        $('liveContent').store('tip', tips);    
    }
    
    function refreshPanel()
    {
        var destination = $('liveContent');
        var myRequest = new Request.HTML({
            update: destination,
               //… your previous code …
            onComplete: function() {
                destination.retrieve('tip').attach('.liveReader');
            }
        });
        myRequest.send();
    }
    

:)

2
追加された
素晴らしい - それは治療を働いた - ありがとう!
追加された 著者 Matt Facer,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript