2011-05-27 114 views
0

当我postload cluetip(即抓住它与ajax,然后附加一个脚本标签到身体),我得到以下JavaScript错误:$ cluetip是未定义的。但是,一切仍然有效。任何想法为什么?

后载脚本经过充分测试,不会破坏其他任何内容。我已确认脚本以正确的顺序加载。

回答

0

动态加载的脚本不可立即使用。你必须等待脚本完全加载,这是一个比人们想象的更复杂的问题。

+0

是否有一个jQuery插件或处理这件事?我已经推出了我自己的postload脚本。 – calicode 2011-05-27 23:11:30

+0

此外,$ cluetip var仅在cluetip js本身中引用。不是外部的。你的答案是否仍然适用? – calicode 2011-05-27 23:14:59

+0

那么,你是100%确定该脚本已成功加载?您可能想要尝试Chrome控制台的“网络”标签,或者在Firefox中使用“防篡改数据”插件,以确保您认为正在提取该库的HTTP请求实际上可行。当然,如果“$ cluetip”引用在库中,并且失败了,那么这可能意味着您的库已损坏,或者它的外部依赖项不满足。 – Pointy 2011-05-28 00:36:53

0

我不知道cluetip,它可能是一个错字,但$cluetip不会被定义,$.cluetip(注意“”)应该是。

快速查看文档似乎让我觉得cluetip是一个必须在某个元素上调用的函数,即$('#somediv').cluetip(...)。如果你想要全局默认值,你有$.cluetip.setup(...),但无论哪种方式,它不会定义$cluetip,只是$.cluetip

1

我有一个类似的问题,这里是我如何最终解决它(即没有更多$cluetip未定义的错误信息)。

首先,这是我的情况,可能与您的情况类似。在页面上,我有一个

<div id="sel_area"></div> 

它是空的,这个想法是使用jQuery的/ AJAX动态生成所需<select><option>...</option>...</select> HTML代码插入到#sel_area上面,像这样

$('#sel_area').html(data); 

哪里数据是生成的HTML select标记。

但是,我认为我的问题是因为我没有以JSON或XML格式重新生成动态生成的数据结果,然后相应地处理它。相反,我懒懒地像普通文本/ html一样返回结果。当我一直得到$cluetip是未定义的错误,无论我尝试了什么,我决定使用alert(data)看到被返回。唉,在那里我亲眼看到数据不仅仅是我回应的内容,而且它还附带了整个html页面!这个解决方案对我来说很清楚。没有放弃以XML或JSON协议返回数据,我做了以下小改动来解决问题:

生成<select>标记的远程脚本的更改。最后的最后

echo "$select_tag"; 

我改变了这

echo "$select_tag~"; 

也就是说,我追加尾随〜(波浪号)作为我的select_tag串输出和HTML页面,我之间的分隔符,现在无论我是否喜欢,都知道会被附加。

jQuery/AJAX方法的变化。

我取代了线

$('#sel_area').html(data); 

与下面几行:

data_list = data.split('~'); 
$('#sel_area').html(data_list[0]); 

有你有它。这就是诀窍。 split方法使我能够很容易地从数据中分离我想要的select_tag,因为我已经明智地插入了〜(代字号)作为字段分隔符,我知道它不是select_tag结果的一部分,也不是系统附加的HTML页面。希望这可以帮助。