J'utilise des isotopes (v1) et j'ai créé un champ de recherche suivant an example in a Pen.Filtres + Recherche par Isotopes Pauses Recherche?
Initialement, cela fonctionne, cependant, si je filtre la galerie d'isotopes, le champ de recherche cesse de fonctionner. Je crois que la fonction de recherche fonctionne encore ne filtre pas la galerie et je ne sais pas comment résoudre le problème. En fait, je ne sais pas quel est le problème exact car aucune erreur n'est levée.
Here is a Fiddle avec un exemple de travail.
Voici la recherche, filtre et JavaScript isotope:
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);
}
}
Comment puis-je résoudre le problème?
Remarque: J'utilise jQuery 2.1.1.
peut vous faire un violon? –
@DaveA - Il y a un violon dans ma question. Juste au-dessus de mon code est le lien. – L84
@MohdDhiyaulhaq - Vous avez édité la question et ajouté le tag 'jsFiddle'. Vous ne devez pas ajouter cette balise, à partir de [jsFiddle tag wiki] (http://stackoverflow.com/tags/jsfiddle/info): 'Cette balise doit être utilisée lorsque vous posez une question à propos de jsFiddle, pas parce que votre question contient simplement un exemple Hébergé sur jsFiddle.' – L84