2

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

我必须重新提出这个问题,该问题由于问题结构不佳和 OP 的回答不明确而被关闭。但是,我遇到了同样的问题,需要帮助。

像以前的 OP 一样,我正在尝试重现这个 jsfiddle:http: //jsfiddle.net/nYkAG/396/,但是 javascript 不会运行。

OP 链接到她尝试使其工作的尝试和我的相同CtrlW查看标记/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 的原始示例

4

1 回答 1

3

将您的代码放入“就绪”处理程序中:

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

jsfiddle 站点会为您执行此操作,除非您告诉它不要这样做。看到左侧的选择下拉菜单,在您选择库的下方,上面写着“onLoad”吗?这意味着 jsfiddle 将您的 JavaScript 包装在窗口的“加载”处理程序中。我的建议是相似的(jsfiddle 选项“在 DOM 就绪时”)。您的代码中的内容相当于“无换行<head>”,如果您选择该设置并尝试使用您的小提琴,它将无法正常工作。

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

于 2013-04-21T16:23:05.537 回答