2011-10-28 9 views
1

Request.HTML 機能にヒントを追加する際に問題が発生します。私は30秒ごとに内容を更新するdivを持っています。 返されるコンテンツには、クラス名が ".liveReader"の一連のdivが含まれています。Request.HTMLコンテンツのmootoolsツールのヒントが表示されない

は、ここで私は

  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(); 
      } 

コンテンツを開始する必要がJSだだから、HTMLは、まだ私は見ていますすべてが通常のツールチップのタイトルである

<div id="liveContent"> 
    <div id="item1" class="liveReader" title="item 1"><p>Text 1</p></div> 
    <div id="item2" class="liveReader" title="item 2"><p>Text 2</p></div> 
</div> 

です!何か案は?!!

答えて

2

問題は可変スコープです。

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

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

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

  1. tips共有変数を作成します。たとえば、window.addEventコールの2番目の引数に関数を宣言してから、initLiveContentonCompleteコールバックの両方で参照することができます。

  2. は、はるかにMooish     :)   使用Element storageは動的に更新された容器からあなたTipsインスタンスを取得します。それは次のとおりです。

    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(); 
    } 
    

:)

+0

素晴らしい - それは御馳走を働いた - ありがとうございました! –

関連する問題