1

我正在努力用 jquery isotope 构建一个合适的项目过滤器。如果它们没有被“同位素隐藏”类隐藏,我只想获取上一个和下一个项目的 ID。我怎样才能做到这一点?

// Get the id's of previous and next projects
if ( $prev.length !== 0 && $next.length !== 0 ) {
    prev_item_id = $prev.find('.project-link').attr( "data-post_id" );
    next_item_id = $next.find('.project-link').attr( "data-post_id" );
}
else if ( $prev.length !== 0 ) {
    prev_item_id = $prev.find('.project-link').attr( "data-post_id" );
}
else if ( $next.length !== 0 ) {
    next_item_id = $next.find('.project-link').attr( "data-post_id" );
}

问题是我需要把逻辑放在这里的某个地方。但我不知道如何调整它以排除被同位素隐藏类隐藏的项目。是这样的吗?

var post_id = $( this ).attr( "data-post_id" );
        current_post_id = post_id;

        var nonce = $( this ).attr( "data-nonce" );
 var $allitems = $('.project-link').not('isotope-hidden');
        var $prev = $allitems.[data-post_id="' + post_id + '"]' .parent().parent().prev('.portfolio-item');
        var $next = $allitems.[data-post_id="' + post_id + '"]' .parent().parent().next('.portfolio-item');

非常感谢任何帮助,谢谢

4

3 回答 3

1

尝试以下操作:

function getHiddenIds($element) {
    return $('.project-link:not(.isotope-hidden)', $element).data('post_id');
}
var prev_item_id = getHiddenIds($prev);
var next_item_id = getHiddenIds($next);

参考资料

于 2012-08-01T00:02:53.827 回答
0

您可以在分配点击事件之前简单地存储所有项目

$items = $('.item'); // to reference methods on all .item divs later

然后在你的同位素逻辑中找到应用了 .isotope-hidden 类的那些

$items.find('.isotope-hidden').somemethod('someclass'); // do some stuff with them

如果您有小提琴,则更容易理解您所追求的整体逻辑。

于 2012-08-01T06:29:58.580 回答
0

我想这就是你想要的。只需使用not()

$prev.find('.project-link').not('.isotope-hidden').attr( "data-post_id" );
$next.find('.project-link').not('.isotope-hidden').attr( "data-post_id" );
于 2012-07-31T23:14:14.483 回答