Страницы

Поиск по вопросам

Показаны сообщения с ярлыком fancybox. Показать все сообщения
Показаны сообщения с ярлыком fancybox. Показать все сообщения

суббота, 11 января 2020 г.

Сделать ячейку таблицы ссылкой

#javascript #html #jquery #fancybox


Решил использовать fancyBox3 для вывода изображений. Но возникла проблема в том,
что кнопки на моем сайте оформлены через  и onclick. А по этой библиотеке используется
тег , как можно обернуть ячейку так, чтобы она вся была ссылкой, при этом бы работал
скрипт? Простое  не работает. 

UPD: Судя по документации, это работает так: 


    



Мне же нужно, чтобы работало так: 


        Ячейка 1
    


При этом бы клик считался при нажатии любой части ячейки.
    


Ответы

Ответ 1



td{ border: 1px solid; width: 150px; }
Ячейка-ссылка 1.2
2.1 2.2


Как вызвать fancybox по двойному клику и запретить по одинарному?

#javascript #html #jquery #fancybox #owl_carousel


Есть OwlCarousel с фотографиями, при нажатии на которые по двойному клику должна
открываться галерея fancybox.
 Дело в том, что галерея открывается по умолчанию по одинарному клику.
 А иногда даже просто при попытке сделать свайп карусели открывается модальное окно,
а этого не должно быть.
 Хочу запретить открывать фансибокс по одинарному клику, и слушать двойной.
 Могу отменить первый клик, двойной происходит, но фансибокс не определяется..:



function init() {
  initFancybox();
  initGallerySlider();
}

window.onload = init;


function initGallerySlider() {
  $('.gallery').owlCarousel({
    loop: true,
    margin: 0,
    autoWidth: true
  });
}

function initFancybox() {
  $(document).on('fancybox.init', '.fancybox', function() {
    var
      defaults = {
        maxWidth: 994,
        autoResize: true,
        padding: 0,
        helpers: {
          media: {},
          overlay: {}
        }
      },
      $el = $(this),
      group = $el.attr('data-fancybox-group'),
      options = eval('[' + $el.data('fancybox-options') + ']')[0];

    if (group) $el = $('[data-fancybox-group="' + group + '"]');

    $.extend(defaults, options);

    $el.fancybox(defaults);
  });

  $('.fancybox').trigger('fancybox.init');
}

$('[data-fancybox="gallery"]').click(function(e) {
  e.preventDefault();
});
$('[data-fancybox="gallery"]').dblclick(function() {
  $(this).fancybox();
});
.gallery__item {
  display: block;
  height: 200px;
  width: 200px;
  background-size: cover;
}










Ответы

Ответ 1



Добавил функцию prepairGallery(), которая собирает галерею и правильным образом запускает по двойному клику, отменяя клик одинарный. function init() { initFancybox(); initGallerySlider(); prepairGallery(); } window.onload = init; function initGallerySlider() { $('.gallery').owlCarousel({ loop: true, margin: 0, autoWidth: true }); } function initFancybox() { $(document).on('fancybox.init', '.fancybox', function() { var defaults = { maxWidth: 994, autoResize: true, padding: 0, helpers: { media: {}, overlay: {} } }, $el = $(this), group = $el.attr('data-fancybox-group'), options = eval('[' + $el.data('fancybox-options') + ']')[0]; if (group) $el = $('[data-fancybox-group="' + group + '"]'); $.extend(defaults, options); $el.fancybox(defaults); }); $('.fancybox').trigger('fancybox.init'); } var gallery = []; function prepairGallery() { $(".gallery__item").each(function(i) { /* собираем галерею */ gallery.push({ src: this.href }); $(this).on({ /* отменяем одинарный клик */ click: function(event) { event.preventDefault(); }, /* подключаем двойной клик */ dblclick: function(event) { /* открываем собранную галерею на заданном индексе */ $.fancybox.open(gallery, {padding: 0}, i); } }); }); } .gallery__item { display: block; height: 200px; width: 200px; background-size: cover; }


вторник, 24 декабря 2019 г.

Как настроить всплывающее окно с fancybox после нажатия button с

#php #javascript #form #fancybox #всплывающее_окно


Есть форма:



Подскажите плз, как после отправки формы открыть окно с блоком
на 5-10 секунд и пропадало, планирую сделать на fancybox Планирую использовать: $('#send').submit(function(e) { $.fancybox({ href: '#thx', modal: true }); return false; }); Но открытие так и не происходит....


Ответы

Ответ 1



Document
UPDATE $('.send').click(function() { var timeout = 5000; $.fancybox({ href: '#thx', openEffect: 'elastic', closeEffect: 'elastic' }); SetTimeout("parent.$.fancybox.close({ href: '#thx' });", timeout); setTimeout(function() { $.ajax({ type: $(this).attr('method'), url: $(this).attr('action'), data: $(this).serialize('#contact'), success: function(response) { console.log(response) }, }); }, timeout); });

Ответ 2



Решил сам: в конце php функции добавил код sleep(5); а скрипт такой: $('.send').click(function() { $.ajax({ type: $(this).attr('method'), url: $(this).attr('action'), data: $(this).serialize('#contact'), success: function(data) { $.fancybox({ href: '#thx', openEffect: 'elastic', closeEffect: 'elastic', afterLoad: function() { setTimeout(function() { parent.$.fancybox.close({ closeEffect: 'elastic' }); }, 3000); } }); } }); }); может кому пригодится....

среда, 17 июля 2019 г.

Fancybox 3, баг, при клике внутри окна дублируется еще одно

Как запретить дублирование попап окна при клике в контентной области? Но, чтобы текст можно было выделять мышкой и кнопка закрыть работала.
jQuery(function($) { $('#fancy-1').on('click', function() { $('[data-fancybox="gallery-1"]').fancybox({ touch: false, toolbar: false, hash: false, //smallBtn: true, clickSlide: false, //thumbs: false, lang: "ru", i18n: { ru: { CLOSE: "Закрыть", NEXT: "Следующий", PREV: "Предыдущий", ERROR: "Ошибка" } } }).first().trigger('click'); }); }); Document Смотреть



Ответ

Решение, спасибо большое разработчику fancybox за его помощь!
jQuery(function($) { $('#fancy-1').on('click', function() { $.fancybox.open( $('.inline-gallery-1'), { touch: false, toolbar: false, hash: false, clickSlide: false, lang: "ru", i18n: { ru: { CLOSE: "Закрыть", NEXT: "Следующий", PREV: "Предыдущий", ERROR: "Ошибка" } } }); }); }); Document Смотреть


понедельник, 4 марта 2019 г.

Сделать ячейку таблицы ссылкой

Решил использовать fancyBox3 для вывода изображений. Но возникла проблема в том, что кнопки на моем сайте оформлены через и onclick. А по этой библиотеке используется тег , как можно обернуть ячейку так, чтобы она вся была ссылкой, при этом бы работал скрипт? Простое не работает.
UPD: Судя по документации, это работает так:

Мне же нужно, чтобы работало так:
Ячейка 1
При этом бы клик считался при нажатии любой части ячейки.


Ответ

td{ border: 1px solid; width: 150px; }

Ячейка-ссылка 1.2
2.1 2.2

пятница, 1 марта 2019 г.

Как вызвать fancybox по двойному клику и запретить по одинарному?

Есть OwlCarousel с фотографиями, при нажатии на которые по двойному клику должна открываться галерея fancybox Дело в том, что галерея открывается по умолчанию по одинарному клику. А иногда даже просто при попытке сделать свайп карусели открывается модальное окно, а этого не должно быть. Хочу запретить открывать фансибокс по одинарному клику, и слушать двойной. Могу отменить первый клик, двойной происходит, но фансибокс не определяется..:
function init() { initFancybox(); initGallerySlider(); } window.onload = init; function initGallerySlider() { $('.gallery').owlCarousel({ loop: true, margin: 0, autoWidth: true }); } function initFancybox() { $(document).on('fancybox.init', '.fancybox', function() { var defaults = { maxWidth: 994, autoResize: true, padding: 0, helpers: { media: {}, overlay: {} } }, $el = $(this), group = $el.attr('data-fancybox-group'), options = eval('[' + $el.data('fancybox-options') + ']')[0]; if (group) $el = $('[data-fancybox-group="' + group + '"]'); $.extend(defaults, options); $el.fancybox(defaults); }); $('.fancybox').trigger('fancybox.init'); } $('[data-fancybox="gallery"]').click(function(e) { e.preventDefault(); }); $('[data-fancybox="gallery"]').dblclick(function() { $(this).fancybox(); }); .gallery__item { display: block; height: 200px; width: 200px; background-size: cover; }



Ответ

Добавил функцию prepairGallery(), которая собирает галерею и правильным образом запускает по двойному клику, отменяя клик одинарный.
function init() { initFancybox(); initGallerySlider(); prepairGallery(); } window.onload = init; function initGallerySlider() { $('.gallery').owlCarousel({ loop: true, margin: 0, autoWidth: true }); } function initFancybox() { $(document).on('fancybox.init', '.fancybox', function() { var defaults = { maxWidth: 994, autoResize: true, padding: 0, helpers: { media: {}, overlay: {} } }, $el = $(this), group = $el.attr('data-fancybox-group'), options = eval('[' + $el.data('fancybox-options') + ']')[0]; if (group) $el = $('[data-fancybox-group="' + group + '"]'); $.extend(defaults, options); $el.fancybox(defaults); }); $('.fancybox').trigger('fancybox.init'); } var gallery = []; function prepairGallery() { $(".gallery__item").each(function(i) { /* собираем галерею */ gallery.push({ src: this.href }); $(this).on({ /* отменяем одинарный клик */ click: function(event) { event.preventDefault(); }, /* подключаем двойной клик */ dblclick: function(event) { /* открываем собранную галерею на заданном индексе */ $.fancybox.open(gallery, {padding: 0}, i); } }); }); } .gallery__item { display: block; height: 200px; width: 200px; background-size: cover; }


вторник, 27 ноября 2018 г.

Как настроить всплывающее окно с fancybox после нажатия button с

Есть форма:


Подскажите плз, как после отправки формы открыть окно с блоком
на 5-10 секунд и пропадало, планирую сделать на fancybox
Планирую использовать:
$('#send').submit(function(e) { $.fancybox({ href: '#thx', modal: true }); return false; });
Но открытие так и не происходит....


Ответ

Решил сам: в конце php функции добавил код sleep(5);
а скрипт такой:
$('.send').click(function() { $.ajax({ type: $(this).attr('method'), url: $(this).attr('action'), data: $(this).serialize('#contact'), success: function(data) { $.fancybox({ href: '#thx', openEffect: 'elastic', closeEffect: 'elastic', afterLoad: function() { setTimeout(function() { parent.$.fancybox.close({ closeEffect: 'elastic' }); }, 3000); } }); } }); });
может кому пригодится....