Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Fancybox - две взаимозависимые задачи (https://javascript.ru/forum/jquery/53545-fancybox-dve-vzaimozavisimye-zadachi.html)

spo 08.02.2015 16:50

Fancybox - две взаимозависимые задачи
 
1.
Имеется таблица, в которой каждая строка - это товар (изображение, название и пр. харрактеристики).
В одной из ячеек есть iframe.fancybox-ссылка вида tovar.html
Ссылка имеет атрибут data при помощи которого товары сгруппированы, для пролистывания в fancybox-окне.
Задача: сделать кликабельной всю строку в таблице.
Проблема: ошибка too much recursion

$('tbody tr').click(function() {
	$(this).find('a').click();
});

В сети есть материал на эту тему но у меня так и не получилось разобраться.

2.
Частично решил задачу следующим образом:
$('tbody tr').click(function (e) {
	e.preventDefault();
	$.fancybox({
		href: $(this).find('a').attr('href'),
		type: 'iframe'
	});
});

Но данный метод не позволяет передать атрибут для группированных товаров. То есть все работает - при клике на строке открывается fancybox-окно, но пролистывать товары нельзя.

Прошу подсказать решение либо для первого либо для второго варианта.

рони 08.02.2015 17:49

spo,
для группировкки есть параметр rel="group"

spo 08.02.2015 18:02

Цитата:

Сообщение от рони (Сообщение 355680)
для группировкки есть параметр rel="group"

Совершенно верно, rel="group" или data-fancybox-group="group"
Если вы имели ввиду использование их тут:
$('tbody tr').click(function (e) {
	e.preventDefault();
	$.fancybox({
		href: $(this).find('a').attr('href'),
		type: 'iframe',
		rel: 'tovar'
	});
});

то это не работает. В этом и заключается моя проблема.

рони 08.02.2015 18:15

spo,
а так ?
$('tbody tr').click(function (e) {
e.preventDefault();
$.fancybox.open( $('[rel="tovar"]'), {type: 'iframe'} )
});

spo 08.02.2015 19:06

А так один по кругу листается.
Переключения на другие товары не происходит.

рони 08.02.2015 19:16

spo,
сделали бы макет с минимальным html

spo 09.02.2015 17:55

Цитата:

Сообщение от рони (Сообщение 355707)
сделали бы макет с минимальным html

Чтото не очень получилось http://jsfiddle.net/hnew3ms2/1/

рони 09.02.2015 18:48

spo,
и чем вас не устроил код в 4 посте?
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>demo</title>
  <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script>
  <link rel="stylesheet" type="text/css" href="http://fancyapps.com/fancybox/source/jquery.fancybox.css">
  <script type='text/javascript' src="http://fancyapps.com/fancybox/source/jquery.fancybox.js"></script>
<script type='text/javascript'>
$(function() {
    $("tbody tr").click(function(e) {
        e.preventDefault();
        $.fancybox.open($('[rel="block"]'), {
            type: "iframe",
            iframe: {
                scrolling: "auto",
                preload: true
            },
            width: "70%",
            height: "70%"
        })
    })
});
</script>
</head>
<body>
<table>
	<tr>
		<td><a class="block-fancybox fancybox.iframe" href="http://ru.wikipedia.org/wiki/%D0%92%D0%BE%D0%B4%D0%BE%D1%80%D0%BE%D0%B4" rel="block"><img src="img/block.png" alt="" /></a></td>
		<td>text</td>
	
		<td><a class="block-fancybox fancybox.iframe" href="https://ru.wikipedia.org/wiki/%D0%9A%D0%B8%D1%81%D0%BB%D0%BE%D1%80%D0%BE%D0%B4" rel="block"><img src="img/block.png" alt="" /></a></td>
		<td>text</td>
	</tr>
    <tr>
		<td><a class="block-fancybox fancybox.iframe" href="https://ru.wikipedia.org/wiki/%D0%A5%D1%80%D0%BE%D0%BC" rel="block"><img src="img/block.png" alt="" /></a></td>
		<td>text</td>
			<td><a class="block-fancybox fancybox.iframe" href="https://ru.wikipedia.org/wiki/%D0%A6%D0%B8%D0%BD%D0%BA" rel="block"><img src="img/block.png" alt="" /></a></td>
		<td>text</td>
	</tr>
</table>

</body>
</html>

spo 10.02.2015 11:40

Большое спасибо, рони!
Действительно работает. Видимо я где то допустил ошибку когда тестировал.


Часовой пояс GMT +3, время: 16:42.