0

jqueryがポップアップページに含まれている場合にfancyboxポップアップを閉じる際に問題が発生します(私はAJAXを使用しており、ポップアップ内に外部phpページを含めています)。fancyboxは次のように設定されています。

$(".various3").fancybox({
'type'    : 'ajax',
'titlePosition'     : 'inside',
'transitionIn'      : 'none',
'transitionOut'     : 'none',
'ajax' : {
type        : 'GET'
}
});

ポップアップには、ユーザーがポップアップを閉じることができる[キャンセル]ボタンがあります(jQuery.fancybox.close();を使用)。他の機能を動作させるには、ポップアップページにjqueryを含める必要があります。これにより、jQuery.fancybox.close();が妨げられます。働くことから。ポップアップページからjqueryを削除すると正常に機能しますが、メインページでjqueryのインスタンスを参照する方法を理解できません(場合によっては親を試しましたが、これが機能するはずだとは思わなかったでしょうが、 divと実際にはそうではありませんでした)。私は使用してみました:

var localjquery = jQuery.noConflict(true);

ポップアップページ内で、これによりjQuery.fancybox.close();を使用できます。ポップアップを正常に閉じるには、ただし、これにより、編集できないこのページの他のプラグインに必要なjqueryを参照するために$を使用できなくなります。追加した場合

var mainjquery = jQuery.noConflict();

メインページのjqueryの最初のインスタンスの後、これは明らかに正常に機能し、親ではmainjqueryとして参照できますが、それを試してみてください

mainjquery.fancybox.close();

ポップアップに、mainjqueryが未定義であると表示されます。

複数のjqueryインスタンスの組み合わせと、ajaxを介して完全に別個のページをdivにロードすることによる問題だと思います(iframeなどを使用して親を使用するのではなく)。子ポップアップからmainjquery参照を参照する方法、またはファンシーボックスを閉じるためのより良い方法に誰かが光を当てることができれば、それは大いにありがたいことです。

本当にありがとう!

デイブ

4

1 に答える 1

0

最善の方法は、それがajaxリクエストであるかどうかをテストすることです。テストする場合は、jquery(またはそのことに関して既に持っている他のスクリプト)を含めないでください。

これは、私がphpページでajaxと通常のページリクエストの両方を行うために使用するコードのサンプルです。

define('IS_AJAX', isset($_SERVER['HTTP_X_REQUESTED_WITH']) && 
strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) == 'xmlhttprequest');
....
if(!IS_AJAX)
{
    //echo your header with scripts
    echo $header;
}
//else just echo the contents of the page body

編集:

タグに何かを追加する必要がある場合headは、fancyboxにajaxタイプではなくiframeを使用する必要があります。

于 2012-05-31T14:50:18.370 に答える