mootools工具提示未显示Request.HTML内容

时间:2011-10-28 10:33:26

标签: javascript css mootools mootools-events mootools-more

我在向Request.HTML添加提示方面遇到了一些麻烦 功能。我有一个div,它每30秒刷新一次内容。 返回的内容有一系列带有类名的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"><p>Text 1</p></div>
    <div id="item2" class="liveReader" title="item 2"><p>Text 2</p></div>
</div>

然而,我所看到的只是正常的工具提示标题!有任何想法吗?!!

1 个答案:

答案 0 :(得分:2)

您的问题在于变量范围。

您的onComplete处理程序使用对tips的引用,而此变量是initLiveContent函数的本地变量。因此,onComplete调用失败。

所以,第一个提示(没有双关语意思):始终以实际的调试器开始,并将其设置为在所有异常中断。否则,由于错误(“未定义变量tips”)从回调中抛出,它将不会出现在标准控制台中。

然后,有两种修复代码的方法:

  1. 使tips成为共享变量。例如,您可以在一个函数中声明它,该函数将是window.addEvent调用的第二个参数,然后在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();
    }
    
  3. :)