こんにちは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();
};
プラグインのインポート後にjQueryをリロードしていたため、このタイプのエラーがすでに発生していました。
私はこの問題を抱えていましたが、jQueryの一部のバージョンはFancyBoxのバージョンと互換性がないようです。たとえば、Fancybox 1.3.4はjQueryバージョン1.7未満ではバグがあり、1.8以上のバージョンでは動作しません。
Easing.jsやmousewheel.jsなどの拡張機能を読み込む必要があります[〜#〜] before [〜#〜]メインのfancyboxプラグイン。これで問題が解決します。
関数としての「fancybox」が存在しない場合、jQueryソースまたはプラグインソースのいずれかがページにロードされていない可能性があります。パス、ファイル名、拡張子がすべて正しいことを確認してください。
編集:プラグインにリンクする前に、必ずjQuery Sourceにリンクしてください。プラグインがjQueryの前にHTMLにロードされると、プラグインは失敗します。
私の場合、jQuery.noConflict();別のjQueryプラグインの行...すべてを削除すると、動作し始めました。
1)jQueryをすでにロードしていますか?そうでない場合は、$コマンドが開始される前にロードします。
2)ページ内でjqueryライブラリ(.js)を数回ロードしている可能性があります。 1つだけをロードしてください。
3)ファイルの最後で、次のjavascriptコマンドを実行できます:$ = jQuery.noConflict();
。そうでなければ、どこでも$の代わりにWord jQueryを使用します。
WordPress Webサイトでこの問題が発生し、fancybox.js
インストールした2つのプラグインのコードで2回表示されます。したがって、コードをチェックし、必ず1つのソースからロードしてください。
JQueryをヘッダータグに含むプラグインを使用している場合、この問題が発生する可能性があります。最近、ブログに「TheThe Slider」を追加しましたが、すべてのFancyBoxが機能しなくなりました。ただし、この状況には簡単な修正があります。基本的に、プラグインディレクトリに移動し、jqueryの呼び出しを検索し、使用条件付きにします。この実装を確認したい場合は、スクリーンキャプチャで ブログについて を実行しました。