ImageMapper Beatles演示不会在jsFiddle之外运行

这实际上只是一个与ImageMapper jQuery插件相关的javascript问题。

我必须重新提出由于问题构建不良以及OP反应不明确而被关闭的问题。 但是,我遇到了同样的问题,需要帮助。

像之前的OP一样,我试图重现这个jsfiddle: http : //jsfiddle.net/nYkAG/396/ ,但javascript将无法运行。

OP链接到她尝试使其工作,我的相同 。 按Ctrl键查看标记/ javascript。 显然我们都错过了一些东西(可能是因为类似的新手因素)。 它可能是左侧面板中jsfiddle中引用的onLoad()函数吗?

我添加了一个简单的jQuery测试,它的工作原理如下:

$(function() { alert('Hi'); }); 

所以我知道库正在加载正确,代码中没有明显的错误。 但是,我无法理解这些线条,并想知道是否有些东西丢失了? 但是,他们在jsFiddle中工作..?

 var inArea, map = $('#beatles'), captions = { //stuff here }, single_opts = { //stuff here }, all_opts = { //stuff here }, initial_opts = { //stuff here }; opts = $.extend({}, all_opts, initial_opts, single_opts); 

在任何情况下,示例 – 作为复制/粘贴 – 都不起作用。 我错过了什么? 同样,对于完整的javascript和标记,请参阅OP的原始示例 。

将您的代码放在“准备好”的处理程序中:

 $(function() { // all of your current code here }); 

jsfiddle网站为你做这件事,除非你告诉它不要。 在左侧看到选择下拉菜单,在您选择图书馆的位置下方,在哪里显示“onLoad”? 这意味着jsfiddle将JavaScript包装在窗口的“加载”处理程序中。 我建议的是类似的(关于DOM就绪的jsfiddle选项)。 你在代码中得到的东西相当于“No wrap-in ”,如果你选择那个设置并试试你的小提琴,它就行不通了。

这里发生的是,如果您的代码在HTML被解析为DOM之前运行,那么您对“#beatles”的搜索将一无所获。 通过延迟事务直到DOM准备好,您可以确保代码将找到它所需的元素。