У мене є якір, який відкриває скриньку. Я хочу, щоб fancybox відкривався тільки тоді, коли було зроблено вибір з вікна вибору.
Я дізнався, що прив'язка події натискання до якоря з preventDefault або return 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) fancybox прив'язані до класу "bigfancybox" якоря.
У jQuery у мене є перевірка, чи зроблено вибір на match_id:
jQuery("#brasil").fancybox({
onStart: function() {
var matchid = jQuery("#match_id").val();
if(matchid == "")
{
alert(selectmatchmessage);
return false;
}
}
});
Це все працює відмінно, крім того, що якщо умовазустрічається, тепер fancybox відкривається в розмірах за замовчуванням і не відкривається як iframe, як це було б без умови jQuery. Чи є спосіб перевірити стан спочатку перед відкриттям fancybox в iframe?
Відповіді:
2 для відповіді № 1Можливо, вам доведеться прив'язати a click
подія твоєму #brasil
селектор (або ваш .bigfancybox
перемикач, якщо ви віддаєте перевагу), а не \ t
Потім перевірте стан після подія і пожежогасіння казино програмно якщо умова зустрічається інакше нічого не робити (повернення 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
ПРИМІТКА :
Скрипка використовує fancybox v1.3.4, але код буде також працювати для fancybox v2.x теж, просто переконайтеся, що ви використовуєте правильні варіанти API для кожної версії.