我的网站上有一个同位素实例,将其转换为使用附加方法后,似乎破坏了我的javascript函数的其余部分。当我将所有图像最初都放在index.html的标记中时,同位素的过滤以及我为每个图像所拥有的灯箱插件都可以正常工作。现在,我已经按照以下方式实现了(使用Desandro的大多数同位素代码:

HTML:

    <div class="main">
        <div id="filters" class="button-group">
            <p>FILTER:</p>
            <button class="selected" data-filter="*">SHOW ALL</button>
            <button class="" data-filter=".photography">PHOTOGRAPHY</button>
            <button class="" data-filter=".film">FILM</button>
            <button class="" data-filter=".design">DESIGN</button>
        </div>
        <div class="isotope">
            <div class="grid-sizer"></div>
        </div>
    </div>


Javascript:

$(function() {

var $container = $('.isotope');
$container.isotope({
    "itemSelector": ".item",
    "columnWidth": ".grid-sizer"
});

function getItemPhotography(i) {
    var item = '<div class="item photography"><a class = "fluidbox" href =        "img/photography/' + i + 'big.jpg" title = "Click to enlarge"><img src = "img/photography/' + i + '.jpg" class = "image"/></a></div >';
    return item;
}

function getItemDesign(i) {
    var item = '<div class="item design"><a class = "fluidbox" href = "img/design/' + i + 'big.png" title = "Click to enlarge"><img src = "img/design/' + i + '.png" class = "image"/></a></div >';
    return item;
}

var $items = getItems();
// hide by default
$items.hide();
// append to container
$container.append($items);
$items.imagesLoaded().progress(function(imgLoad, image) {
    // image is imagesLoaded class, not <img>
    // <img> is image.img
    var $item = $(image.img).parents('.item');
    $item.show();
    $container.isotope('appended', $item);
});

function getItems() {
    var items = '';
    for (var i = 1; i < 38; i++) {
        items += getItemPhotography(i);
    }
    for (var i = 1; i < 4; i++) {
        items += getItemDesign(i);
    }
    // return jQuery object
    return $(items);
}

});


添加以上内容后,该部分已损坏:

//Filtering for isotope
$(function() {
$('#filters').on('click', 'button', function() {
    var filterValue = $(this).attr('data-filter');
    $container.isotope({
        filter: filterValue
    });
});
$("button").click(function() {
    // Reset them
    $("button").removeClass("selected");
    // Add to the clicked one only
    $(this).addClass("selected");
});
});

//Fluidbox lightbox plugin
$(function() {
    $('.fluidbox').fluidbox();
});


这些图像将附加到同位素容器中并按预期进行布局。但是,现在同位素的过滤已中断,Fluidbox灯箱实例也不起作用。

非常感谢您的帮助。在过去的几个小时中,我一直在为此苦苦挣扎,并开始认为它可能和我的函数初始化或某个地方的分号一样简单。

最佳答案

解决。同位素过滤器函数中缺少$ container的引用。

关于javascript - 附加的同位素打破了剩余的jQuery,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/27893984/

10-11 06:01