jquery - gridLayout + 可过滤的 div 框 --> 不诉诸

标签 jquery

我不是 javascript 专业人士或任何其他人。我只是将一些东西放在一起并希望它能起作用。

这就是我所做的。我从 nettuts+ 获取了有关 "filterable portfolio" 的教程东西并添加了jquery插件“jQuery.gridLayout”(phase-change.org/jquery.gridlayout/)一切工作正常。 Div 在网格上进行排序,当我单击类别链接时,它们就会消失。但他们应该在消失后采取补救措施。现在这些盒子停留在原来的位置,到处都留下了巨大的空白。

我的 JavaScript 调用如下所示

$(document).ready(function(){
                           
    $('ul#navigation a').click(function() {
    $(this).css('outline','none');
    $('ul#navigation .current').removeClass('current');
    $(this).parent().addClass('current');
    
    var filterVal = $(this).text().toLowerCase().replace(' ','-');
            
    if(filterVal == 'all') {
        $('#grid li.hidden').fadeIn('slow').removeClass('hidden');
    } else {
    
        $('#grid .box').each(function() {
            if(!$(this).hasClass(filterVal)) {
                $(this).fadeOut('slow').addClass('hidden');
            } else { 
                
                $(this).fadeIn('slow').removeClass('hidden');
            }
        });
         
    }

    return false;   
    
});
$('#grid').gridLayout('.box', {col_width: 370, min_cols: 2});
    // options - (values above are the defaults)
    // col_width: the width of each grid block
    // min_cols: the minimum number of cols on the page (reducing browser width below this will not decrease number of columns). Set to your largest block (3 = block spans 3 columns)
    
    
    // gridchange event fires when window resize forces a grid refresh
    $('#grid').bind( "gridchange", function(e){
        console.log('gridchange event fired');
    });
    
    // returns heights of each column
    console.log( 'gridLayout.info():', $('#grid').gridLayout.info() );

// this forces a redraw of grid

  $('body').gridLayout.refresh();


});

出于测试目的,我设置了一个页面 18735.webhosting7.1blu.de/test/

对于超链接,我深表歉意,但 stackoverflow 目前不允许我插入多个链接。

最佳答案

我突然想到有几件事我会尝试。绝对不能保证它们会起作用,但为了开始这一点,这里是:

这一行:

  $('body').gridLayout.refresh();

也许如果您在 ul#navigation 事件处理程序中调用它,它会重建网格?试试这个:

$(document).ready(function(){
    $('ul#navigation a').click(function() {
        $(this).css('outline','none');
        $('ul#navigation .current').removeClass('current');
        $(this).parent().addClass('current');
        var filterVal = $(this).text().toLowerCase().replace(' ','-');
        if(filterVal == 'all') {
            $('#grid li.hidden').fadeIn('slow').removeClass('hidden');
        } else {
            $('#grid .box').each(function() {
                if(!$(this).hasClass(filterVal)) {
                    $(this).fadeOut('slow').addClass('hidden');
                } else { 
                    $(this).fadeIn('slow').removeClass('hidden');
                }
            });
        }
        $('body').gridLayout.refresh();
        return false;   
    });
});

关于jquery - gridLayout + 可过滤的 div 框 --> 不诉诸,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1062359/

相关文章:

javascript - 如何根据出现顺序更改多个图像的百分比宽度?

javascript - jQuery 4 div 交换问题

javascript - 类选择器不接受 Jquery DOM 操作

javascript - 如何禁用自定义复选框的点击事件

javascript - 对象数组 : Cannot read property 'id' of undefined inside onchange event

jquery动态添加类

javascript - 在 JavaScript 中禁用文本选择器

jquery 导航菜单 div 下拉菜单

javascript - Jquery prevAll() 以 Angular 方式

javascript - 获取动态生成的选择框的数据属性