gpt4 book ai didi

javascript - 过滤器 + 使用同位素搜索会中断搜索吗?

转载 作者:可可西里 更新时间:2023-11-01 02:42:28 26 4
gpt4 key购买 nike

我正在使用同位素 (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。

最佳答案

在你的例子中,$('#filters').on('click', '.button', function () 停止了搜索功能,你重置了放置在 #filters div 中的按钮,所以当你点击它搜索引擎也停止了。

我没有最好的解决方案,但它解决了一些问题:

使用函数回调引擎的思路:

var iso = function() {

//engine here

}

$(function () {
iso();
$('.iso').click(function(){
setTimeout(iso, 500);
});
});

没有 setTimeout 它无法工作。

但这并没有解决主要问题

FIDDLE你会明白我的意思的

或者您可以将重置和显示所有按钮放在#filters div 之外

关于javascript - 过滤器 + 使用同位素搜索会中断搜索吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23819517/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com