私はファンシーボックスを開くアンカーを持っています。私は、選択ボックスからの選択が行われたときにのみ、ファンシーボックスを開くようにします。
私は、preventDefaultまたはfalseを返して、クリックイベントをアンカーにバインドしても、fancyboxが開くのを妨げないことが分かりました。 ファンシーボックスの開け方を止める方法を見つけました。今私が持っています:
HTML
<div>
<a id="brasil" href="<?php echo $this->url( array( "module" => "amodule", "controller" => "acontroller", "action" => "soccer"))?>" class="someclass bigfancybox"><?=$this->translate("soccer")?></a>
</div>
ファンシーボックスの寸法(幅、高さなどはfancybox.jsで定義されています)は、アンカーのクラス名 "bigfancybox"に結び付けられています。
jQueryでは、match_idの選択が行われたかどうかを確認します。
jQuery("#brasil").fancybox({
onStart: function() {
var matchid = jQuery("#match_id").val();
if(matchid == "")
{
alert(selectmatchmessage);
return false;
}
}
});
これはすべて正常に動作しますが、条件fancyboxがデフォルトのディメンションで開き、jQuery条件なしでiframeとして開くことはありません。 iframeにfancyboxを開く前に条件を最初にチェックする方法はありますか?
回答:
回答№1は2あなたは click
イベント あなたの #brasil
セレクター(またはあなたの .bigfancybox
セレクタを使用してください)。
次に、 イベント fancyboxをプログラムで起動する if 条件が満たされていない場合は何もしない(return false
)のように:
jQuery("#brasil").on("click", function () {
var matchid = jQuery("#match_id").val();
if (matchid !== "") {
// condition is NOT empty, so fire fancybox
jQuery.fancybox({
// fancybox API options
href: this.href,
type: "iframe"
});
};
return false; // prevent default and stop propagation
}); // on click
見る JSFIDDLE
注意 :
fiddleはfancybox v1.3.4を使用しますが、コードはfancybox v2.xでもシームレスに機能します。バージョンごとに適切なAPIオプションを使用するようにしてください。