我正在使用同位素(v1),並在an example in a Pen後創建了一個搜索字段。過濾器+同位素搜索中斷搜索?
最初它的工作原理,但是,如果我篩選同位素畫廊然後搜索字段停止工作。
我相信搜索功能仍然運行只是不過濾畫廊,我不確定如何解決問題。事實上,我不確定具體問題是什麼,因爲沒有發生錯誤。
Here is a Fiddle附帶一個工作示例。
這裏是搜索,過濾和同位素的JavaScript:
var $container = $('.isotope'),
qsRegex,
filters = {};
$container.isotope({
itemSelector : '.element',
masonry : {
columnWidth : 120
},
getSortData : {
name : function ($elem) {
return $elem.find('.name').text();
}
},
filter: function() {
return qsRegex ? $(this).text().match(qsRegex) : true;
}
});
function searchFilter() {
qsRegex = new RegExp($quicksearch.val(), 'gi');
$container.isotope();
}
// use value of search field to filter
var $quicksearch = $('#quicksearch').keyup(debounce(searchFilter));
$('#reset').on('click', function() {
$quicksearch.val('');
searchFilter()
});
// store filter for each group
$('#filters').on('click', '.button', function() {
var $this = $(this);
// get group key
var $buttonGroup = $this.parents('.button-group');
var filterGroup = $buttonGroup.attr('data-filter-group');
// set filter for group
filters[ filterGroup ] = $this.attr('data-filter');
// combine filters
var filterValue = '';
for (var prop in filters) {
filterValue += filters[ prop ];
}
// set filter for Isotope
$container.isotope({ filter: filterValue });
});
// debounce so filtering doesn't happen every millisecond
function debounce(fn, threshold) {
var timeout;
return function debounced() {
if (timeout) {
clearTimeout(timeout);
}
function delayed() {
fn();
timeout = null;
}
setTimeout(delayed, threshold || 100);
}
}
我該如何解決這個問題?
注:我正在使用jQuery 2.1.1。
你可以做一個小提琴? –
@DaveA - 在我的問題中有一個小提琴。就在我的代碼之上的是鏈接。 – L84
@MohdDhiyaulhaq - 您編輯了問題並添加了標籤'jsFiddle'。您不應該從[jsFiddle標記wiki](http://stackoverflow.com/tags/jsfiddle/info)添加該標記:'應該在詢問關於jsFiddle的問題時使用此標記,而不是因爲您的問題僅包含示例託管在jsFiddle上。' – L84