2013-05-17 6 views
6

Ho integrato un plug-in di ricerca jquery per cercare elementi di isotopi, il plug-in utilizza l'espressione regolare per ordinare il contenuto, in tempo reale, in base all'input di ricerca.Riordino isotopico dopo la ricerca non funzionante

elementi Isotope sta aggiornando automaticamente (sto usando un plugin per WordPress che recupera i dati dai social network)

La mia domanda è, come posso riordinare gli elementi dopo l'esecuzione della ricerca?

LE: Ho risolto questo utilizzando ALTRE Plugin per SEARCHING: Ecco il codice:

   $(document).ready(function() { 
      $("#id_search").quicksearch(".dcsns-content .isotope-item", { 
       noResults: '#noresults', 
       loader: 'span.loading', 

       'show': function() { 
    $(this).addClass('quicksearch-visible'); 
}, 
'hide': function() { 
    $(this).removeClass('quicksearch-visible'); 
}, 
'onAfter': function() { 
    $('.dcsns-content .stream').isotope({ filter: '.quicksearch-visible' }); 
} 
      }); 
     }); 
+0

si utilizza 'jQuery (finestra) .load (function() {' perché non 'jQuery (document) .ready'? Forse gli elementi che stai cercando non sono ancora presenti al caricamento della pagina. Inoltre, non vedo alcun elemento' .wall-outer' o '.stream' nel tuo codice HTML – TCHdvlp

+0

scusa, ma questo non mi sta aiutando, ho chiesto qualcos'altro, la ricerca funziona, gli elementi sono ok, quello di cui ho bisogno è un metodo per riordinare gli elementi dopo la ricerca, basta controllare il link – agis

+0

my bad, I pensavo fosse un problema con "ReferenceError" .Wmell, la documentazione nel sito isotopo parla di 'g parametro etSortData'. Suppongo che tu l'abbia già provato. – TCHdvlp

risposta

2

come si dichiara $ contenitore nel .load, la funzione solo .load lo vedrà

due soluzioni, si aggiunge var $ container = $(); nei js normali così .load e .ready sarà accedervi

oppure unire tutti nella funzione .ready:

$(function(){ 
    var $searchBox = $("#searchbox"); 
    var $searchFilter = $('.searchFilter'); 
    var $container = $('.wall-outer .stream'); 

    $searchBox.on("blur",function(){ 
     if(this.value === '') 
       this.value='Keyword(s)'; 
    }).on("focus",function(){ 
     if(this.value === this.defaultValue) 
       this.value = ''; 
     else this.value = null; 
    }); 

    $searchFilter.simpleContentSearch({ 
     'active' : 'searchBoxActive', 
     'normal' : 'searchBoxNormal', 
     'searchList' : 'dcwss-content ul li',  // this is important 
     'searchItem' : 'div'      // this is important 
    }); 

    $(".search-btn").on("click", function(){ 
     $searchBox.val($(this).data("search")); 
     $searchFilter.keyup(); 
     $container.isotope('reLayout'); 
    }); 

    $(".search-reset").on("click", function(){ 
     $searchBox.val(""); 
     $searchFilter.keyup(); 
     $container.isotope('reLayout'); 
    });    

    $container.isotope('reLayout'); 
}); 
+0

Grazie per la risposta, ma ho già trovato una soluzione per questo! – agis

3

sono stato in grado di ottenere un esempio di one-shot di lavoro aggiungendo quanto segue alla fine del il file filtercontent.js:

// Get isotope container 
    $container = jQuery('.dc-wall .stream'); 

    // Clear out existing isotope class instance 
    $container.data('isotope', null); 

    // Start a new isotope instance on the container 
    $container.isotope({ filter: ':visible', sortBy: 'postDate' }); 

Questo funziona solo la prima volta che si fa clic su search 1, ma mostra il concetto di riavviare isotopo è valido. Non capisco abbastanza di come funziona il tuo filtro, ma spero che questo ti dia un punto di partenza.

C'è un problema nel fatto che il filtro contenuto anima di oggetti per display: none utilizzando hide() o fade(), quindi questo funzionava solo se la pelle era istantanea (quindi anche cambiato il filtro da utilizzare hide(0)) esempio

jQuery(this).parent('.' + settings.searchList).hide(0); 
+0

L'ho messo nel [fiddle] (http://jsfiddle.net/dynamyc/V2pQf/9/embedded/result/) ma è strano perché funziona solo con ** Ricerca 1 ** se clicco su * * Ricerca 2 ** non funziona correttamente. Quello su cui può funzionare è fare clic su "Cerca 1" per riordinare gli elementi e quando viene fatto clic su "ricerca 2", la prima cosa è reimpostare l'input di ricerca e dopo eseguire la ricerca e dopo riordinare di nuovo gli elementi. opinione questa può essere una soluzione che può funzionare. Cosa ne pensi? È possibile ? – agis

+1

@ Alec: non riesco a testare correttamente il tuo sito con JSFiddle mentre estrae i file JS dal tuo server e sovrascrive il test JS. La modifica è necessaria per andare in filtercontent.js, ma qui è stata eseguita solo su ** Cerca 1 **. Esaminando il plug-in del social wall, esso chiama a malapena isotopo, tranne che per aggiungere nuovi elementi. Hai provato a contattare gli autori di social plugin? –

+0

Ho aggiunto questo, ma non funziona, puoi dare un'occhiata [link] (http://v2.letsplayibiza.com/elements/), ho chiesto anche agli sviluppatori del plugin ma non danno qualsiasi indicazione solo chiedendo soldi per farlo.Ho trovato una domanda simile [qui] (http://stackoverflow.com/questions/6738327/resorting-isotope-elements-after-search) e sto pensando di applicare lo stesso concetto sul mio codice ma non lo faccio so come posso farlo nel mio codice perché viene utilizzato un altro plug-in di ricerca. – agis

Problemi correlati