web-dev-qa-db-ja.com

ファンシーボックスは機能ではありません

こんにちはjQueryプラグインfancyboxを使用して、誰かがテキストボックスにアドレスを入力し、その横にある送信ボタンを押すと、Bingマップを表示しています。そして、fancyboxが読み込まれ、そのアドレスの地図が表示されます。これは私のアプリケーションではうまく機能していますが、問題は、あるページと他のページでのみうまく機能していることです。ロードすると、fancyboxが関数ではないというエラーが表示されます。エラーコンソールとfirebugコンソールでこのエラーを確認できます。何が問題なのかわかりません。同じコードは別のページでも機能しますが、このページでは機能しませんか?

$("<a href=\"#showmap\">Map</a>").fancybox is not a function

再利用性の問題ではないと確信しています。しかし、fancyboxの元のファイルがロードされているかどうかを確認するためにテストすると、domがロードされているため、実際の問題ではない可能性があります。しかし、他に問題が何であるかを理解することはできません。

これは私のコードです

abbr:は単なるテキストです。ユーザーが選択したものに基づいて異なるdivがあります。各divには独自のコントロールがあり、そのテキストで始まり、mapresults、decValLat、decValLonなどの独自の定義が追加されます。

例:abbr >> eastの場合、idはeastmapresults、eastdecValLat、eastdecValLonなどになります。

function showMapFancybox(abbr){
    var abbr;
    $('#'+abbr+'mapresults').hide(); 
    $('<a href="#showmap">Map</a>').fancybox({
        overlayShow: true,
        onClosed: function() {
            $('#'+abbr+'mapresults').show();
            map_latdec = $('#decValLat').attr('value');
            map_longdec = $('#decValLon').attr('value');
            map_latdeg = $('#degValLat').attr('value');
            map_longdeg = $('#degValLon').attr('value');

            $('#'+abbr+'decValLatsub').val(map_latdec);
            $('#'+abbr+'decValLonsub').val(map_longdec);
            $('#'+abbr+'degValLatsub').val(map_latdeg+'N');
            $('#'+abbr+'degValLonsub').val(map_longdeg+'W');
        }
    }).click();    
};
26
macha

プラグインのインポート後にjQueryをリロードしていたため、このタイプのエラーがすでに発生していました。

61
Guillaume86

私はこの問題を抱えていましたが、jQueryの一部のバージョンはFancyBoxのバージョンと互換性がないようです。たとえば、Fancybox 1.3.4はjQueryバージョン1.7未満ではバグがあり、1.8以上のバージョンでは動作しません。

7
Wyck

Easing.jsやmousewheel.jsなどの拡張機能を読み込む必要があります[〜#〜] before [〜#〜]メインのfancyboxプラグイン。これで問題が解決します。

3
doublejosh

関数としての「fancybox」が存在しない場合、jQueryソースまたはプラグインソースのいずれかがページにロードされていない可能性があります。パス、ファイル名、拡張子がすべて正しいことを確認してください。

編集:プラグインにリンクする前に、必ずjQuery Sourceにリンクしてください。プラグインがjQueryの前にHTMLにロードされると、プラグインは失敗します。

2
Moses

私の場合、jQuery.noConflict();別のjQueryプラグインの行...すべてを削除すると、動作し始めました。

1
Uli

可能な解決策:

1)jQueryをすでにロードしていますか?そうでない場合は、$コマンドが開始される前にロードします。

2)ページ内でjqueryライブラリ(.js)を数回ロードしている可能性があります。 1つだけをロードしてください。

3)ファイルの最後で、次のjavascriptコマンドを実行できます:$ = jQuery.noConflict();。そうでなければ、どこでも$の代わりにWord jQueryを使用します。

1
T.Todua

WordPress Webサイトでこの問題が発生し、fancybox.jsインストールした2つのプラグインのコードで2回表示されます。したがって、コードをチェックし、必ず1つのソースからロードしてください。

0
Shanaka

JQueryをヘッダータグに含むプラグインを使用している場合、この問題が発生する可能性があります。最近、ブログに「TheThe Slider」を追加しましたが、すべてのFancyBoxが機能しなくなりました。ただし、この状況には簡単な修正があります。基本的に、プラグインディレクトリに移動し、jqueryの呼び出しを検索し、使用条件付きにします。この実装を確認したい場合は、スクリーンキャプチャで ブログについて を実行しました。

0
GRY