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 をウィンドウの「ロード」ハンドラにラップすることを意味します。私が提案していることは似ています(「DOM準備完了」のjsfiddleオプション)。コードに含まれているのは「ラップなし」と同等であり、<head>その設定を選択してフィドルを試しても機能しません。

ここで起こっていることは、HTML が DOM に解析される前にコードが実行されると、「#beatles」を検索しても何も見つからないということです。DOM の準備が整うまで処理を遅らせることで、コードが必要な要素を確実に見つけられるようにします。

于 2013-04-21T16:23:05.537 に答える