L84*_*L84 10 javascript jquery jquery-isotope
我正在使用同位素(v1),并在Pen中的示例后创建了一个搜索字段.
但是,最初它可以工作,如果我过滤同位素库,那么搜索字段就会停止工作.
我相信搜索功能仍然运行只是不过滤库,我不确定如何解决问题.事实上,我不确定究竟是什么问题,因为没有错误被抛出.
这是一个小提琴,有一个工作的例子.
这是搜索,过滤和同位素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 );
}
}
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个问题?
注意:我使用的是jQuery 2.1.1.
在您的示例中, $('#filters').on('click', '.button', function ()
停止搜索功能并重置位于 #filters div 内的按钮,因此当您单击它时,搜索引擎也会停止。
我没有最好的解决方案,但它解决了一些问题:
使用函数回调引擎的想法:
var iso = function() {
//engine here
}
Run Code Online (Sandbox Code Playgroud)
和
$(function () {
iso();
$('.iso').click(function(){
setTimeout(iso, 500);
});
});
Run Code Online (Sandbox Code Playgroud)
没有 setTimeout 就无法工作。
但这并没有解决主要问题
看看FIDDLE你就会明白我的意思
或者您可以将“重置”和“显示全部”按钮放置在 #filters div 之外
归档时间: |
|
查看次数: |
2620 次 |
最近记录: |