Isótopos de filtragem pelo início da classe do elemento
-
21-12-2019 - |
Pergunta
Eu estou usando o Isótopo de filtro por categoria para o Wordpress posts.Muitas vezes, os posts são os filhos do filtrados por categorias, para as suas aulas de conter o principal nome da categoria, em nome da classe, mas não igual a este nome.Por exemplo, os filtros são Facebook, Twitter, Youtube.E o nome da classe é facebook-páginas ou twitter-infográficos.Assim, estas mensagens não estão sendo filtrados, a menos que o pai da categoria está marcada como bem.O código que eu uso agora, é o seguinte (o jQuery não-conflito de modo):
var $jcontainer = $j('#portfolio-list');
$jcontainer.imagesLoaded( function() {
// initialize isotope
$jcontainer.isotope({
filter: '*',
itemSelector : '.post',
layoutMode : 'masonry',
});
});
$j('#portfolio-filter a').click(function(){
$j('#portfolio-filter .current').removeClass('current');
$j(this).addClass('current');
var selector = $j(this).attr('data-filter');
$jcontainer.isotope({
filter: selector,
});
return false;
});
Gostaria de saber como conseguir trabalho por parte do texto da classe.Obrigado por qualquer ajuda.
Solução
Depois de algumas pesquisas eu encontrei a solução.Eu percebi que eu possa usar .partida função para verificar a classe, antes de filtragem e, em seguida, atribuir uma classe ".match" para cada correspondente elemento.Em seguida, basta filtrar por esta classe!) Aqui está o código.Espero que ajude alguém!
// cache container
var $jcontainer = $j('#portfolio-list');
$jcontainer.imagesLoaded( function() {
// initialize isotope
$jcontainer.isotope({
filter: '*',
itemSelector : '.post',
layoutMode : 'masonry',
});
});
$j('#portfolio-filter a').click(function(){
$j('#portfolio-filter .current').removeClass('current');
$j('#portfolio-list .match').removeClass('match');
$j(this).addClass('current');
var selector = $j(this).attr('data-filter');
$j('#portfolio-list article' ).each(function() {
if ($j(this).attr('class').match(new RegExp(selector))) {
$j(this).addClass('match');
}
});
$jcontainer.isotope({
filter: '.match',
});
return false;
});
Solução
Solução
Depois de algumas pesquisas eu encontrei a solução.Eu percebi que eu possa usar .a função de correspondência, para verificar a classe antes de filtragem e, em seguida, atribuir uma classe ".match" para cada correspondente elemento.Em seguida, basta filtrar por esta classe!) Aqui está o código.Espero que ajude alguém!
// cache container
var $jcontainer = $j('#portfolio-list');
$jcontainer.imagesLoaded( function() {
// initialize isotope
$jcontainer.isotope({
filter: '*',
itemSelector : '.post',
layoutMode : 'masonry',
});
});
$j('#portfolio-filter a').click(function(){
$j('#portfolio-filter .current').removeClass('current');
$j('#portfolio-list .match').removeClass('match');
$j(this).addClass('current');
var selector = $j(this).attr('data-filter');
$j('#portfolio-list article' ).each(function() {
if ($j(this).attr('class').match(new RegExp(selector))) {
$j(this).addClass('match');
}
});
$jcontainer.isotope({
filter: '.match',
});
return false;
});