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;
}); 
Foi útil?

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;
}); 

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top