将jQuery Quicksand用于多个列表

时间:2013-02-20 17:00:59

标签: jquery jquery-plugins quicksand

我正在尝试使用jQuery Quicksand从一组选项中过滤掉一个项目列表。

我有一个基于简单类(而不是id)的插件功能,正如文档所建议的那样。这是我的JS代码:

$(function() {

// get the action filter option item on page load
var $filterType = $('#filterOptions li.active a').attr('class');

// get and assign the ourHolder element to the $holder varible for use later
var $holder = $('ul.articles');

// clone all items within the pre-assigned $holder element
var $data = $holder.clone()
console.log($data);

// attempt to call Quicksand when a filter option item is clicked
$('#filterOptions li a').click(function(e) {
  // reset the active class on all the buttons
  $('#filterOptions li').removeClass('active');

  // assign the class of the clicked filter option element to our $filterType variable
  var $filterType = $(this).attr('class');
  $(this).parent().addClass('active');

  var $filteredData = $data.find('li[data-type=' + $filterType + ']');

  // call quicksand and assign transition parameters
  $holder.quicksand($filteredData, {
    duration: 800,
    easing: 'easeInOutQuad'
  });
  return false;
});

});

但是,单击其中一个选项时,两个列表都会替换为第一个列表中的结果。您可以通过此JSFiddle查看此信息:http://jsfiddle.net/Dhk9T/

我认为我需要编辑.clone()部分,可能使用.each(),购买我似乎无法使其正常工作。有什么建议!?

1 个答案:

答案 0 :(得分:1)

尝试给ul-list提供更多类别,例如

<ul class="articles one">
<ul class="articles two">

然后在JS代码中抓取两个数据集,例如

var $holderOne = $('ul.articles.one');
var $holderTwo = $('ul.articles.two');

并克隆两者,在正确的数据集中找到正确的项目。