Если вы используете fancybox v2.x, вам не нужно использовать метод jQuery .on()
, поскольку fancybox уже использует " live ", поэтому
$(".fancybox-iframe").bind('click', function(){
var iframeWidth = parseInt(jQuery(this).attr('id'));
}).fancybox({
//options
width : iframeWidth,
});
должен выполнитьТрюк.
ОБНОВЛЕНИЕ :
Я пересмотрел мой код выше, и на самом деле все может быть намного проще, чем ожидалось.
Следующий код позволяет динамически передавать параметр width
через ID
И с галереей фреймов (всего одним щелчком мыши).Просто добавьте к обратному вызову afterLoad
следующее:
jQuery(".fancybox-iframe").fancybox({
//other API options here
afterLoad: function(){
var iframeWidth = parseInt(jQuery(".fancybox-iframe").eq(this.index).attr('id'));
this.width = iframeWidth
}
});// fancybox
Обратите внимание, что вам не нужно устанавливать опцию width
.
OPTION 2
В качестве альтернативы вы также можете динамически передавать параметр width
, используя атрибут data-width
(если вы используете HTML5 DOCTYPE
) вместо ID
(и используйте ID
, если это важно).Я думаю, что это было бы более элегантным решением.
Ваш HTML должен выглядеть так:
<a data-width="<?php echo $content_width; ?>" id="myID" class="fancybox-iframe fancybox.iframe" rel="gallery" href="<?php the_permalink(); ?>"></a>
, а javascript почти такой же
jQuery(".fancybox-iframe").fancybox({
//options
afterLoad: function(){
var iframeWidth = jQuery(".fancybox-iframe").eq(this.index).data("width");
this.width = iframeWidth
}
});// fancybox
У меня естьустановите DEMO с двумя опциями, которые вы можете см. здесь
Последнее примечание: Fancybox использует padding
из 15 пикселей, поэтому общая width
будет iframeWidth + 30
, если вы не установитеопция padding
до 0
.