我在向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>
然而,我所看到的只是正常的工具提示标题!有任何想法吗?!!
答案 0 :(得分:2)
您的问题在于变量范围。
您的onComplete
处理程序使用对tips
的引用,而此变量是initLiveContent
函数的本地变量。因此,onComplete
调用失败。
所以,第一个提示(没有双关语意思):始终以实际的调试器开始,并将其设置为在所有异常中断。否则,由于错误(“未定义变量tips
”)从回调中抛出,它将不会出现在标准控制台中。
然后,有两种修复代码的方法:
使tips
成为共享变量。例如,您可以在一个函数中声明它,该函数将是window.addEvent
调用的第二个参数,然后在initLiveContent
和onComplete
回调中引用它。
更多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();
}
:)