/ / jQueryは条件が満たされている場合にfancyboxを開きます - jquery、iframe、fancybox

jQueryは、条件が満たされている場合にfancyboxを開きます - jquery、iframe、fancybox

私はファンシーボックスを開くアンカーを持っています。私は、選択ボックスからの選択が行われたときにのみ、ファンシーボックスを開くようにします。

私は、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オプションを使用するようにしてください。