Jquery Isotope - 扩展.item中的可点击内容?

时间:2012-01-16 06:29:10

标签: jquery jquery-isotope

我对jQuery有点新手,但我确实知道了事情是如何工作的。现在我正在使用Isotope(流畅/响应式布局)来开发一个简单的页面,并成功地将Fancybox集成到其中的内容中。但问题是,每当我尝试点击Isotope中我的一个盒子中的图像链接时,假设每次点击后盒子都会放大,盒子将关闭回原来的大小,图像叠加在顶部整个东西。

我真的不知道如何解释它,但这里是我在jsfiddle中创建的网站sample

1)不知怎的,我设法让盒子以我想要的方式工作,所以选择盒子不是问题。但是如何点击展开框的文本/视频链接,而不会将框关闭回原始尺寸和位置?我只想在点击另一个新盒子时关闭它。

2)而且,如果可能的话,每次点击窗口时窗口都可以滚动到所选的框吗?

我希望对任何人来说都不会太混乱。提前谢谢了! :)

2 个答案:

答案 0 :(得分:1)

我是新来的,所以我为缺乏彻底的回应而道歉。要获得所需的效果,您必须从展开的框中取消绑定单击函数并选择一个不同的元素(可能在展开时加载它/显示它?我建议将元素放在展开的元素中。)以运行相同的效果现在绑定到扩展框。这样,该框可以使用常规文本/视频/照片,您仍然可以删除展开。

答案 1 :(得分:1)

如果您仍在寻找简单的变量解决方案,您可以这样做

$(function () {

    var $container = $('#container');

    $container.delay(2500).show().css({
        opacity: 0
    }).animate({
        opacity: 1
    }, 2500).isotope({
        itemSelector: '.element',
        masonry: {
            columnWidth: 288
        },
        getSortData: {
            selected: function ($item) {
                return ($item.hasClass('clicked') ? -1000 : 0) + $item.index();
            }
        },
        sortBy: 'selected'

    });

    $('.maximised, .medium').hide();

    $('.display1, .display2').click(function () {
        var $this = $(this);
        bSelector = $this.hasClass('display1') ? '.maximised' : '.medium';

        var $previousSelected = $('.clicked');
        if (!$this.hasClass('clicked')) {
            $this.addClass('clicked');
            $previousSelected.find('.minimised').toggle();
            $previousSelected.find('.maximised').toggle();
            $previousSelected.find('.medium').toggle();
        }

        $previousSelected.removeClass('clicked');

        $this.find('.minimised').toggle();
        $this.find(bSelector).toggle();

        $container.isotope('updateSortData', $this).isotope('updateSortData', $previousSelected).isotope();
    });

});

可能仍会找到一个工作示例here。它在一些元素中具有链接和模态,这些元素在初始点击时最大化。