2013-05-17 14 views
6

Ich habe ein Jquery-Such-Plugin integriert, um Isotop-Elemente zu durchsuchen. Das Plugin verwendet reguläre Ausdrücke, um Inhalte in Echtzeit basierend auf den Sucheingaben zu sortieren.Isotop-Nachbestellung nach der Suche funktioniert nicht

Isotopen-Elemente werden automatisch aktualisiert (Ich verwende ein Wordpress-Plugin, das Daten aus sozialen Netzwerken abgerufen)

Meine Frage ist, wie kann ich die Elemente, nachdem die Suche durchgeführt wird neu anordnen?

LE: Ich habe diese GELöST VON ANDERER PlugIn für SEARCHING VERWENDUNG: Hier ist der Code:

   $(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

Sie verwenden 'jQuery (Fenster) .load (function() {' warum nicht 'jQuery (document) .ready'? Vielleicht sind die gesuchten Elemente beim Laden der Seite noch nicht vorhanden. Außerdem sehe ich in Ihrem html – TCHdvlp

+0

kein' .wall-outer' oder '.stream' Element Entschuldigung, aber das hilft mir nicht, ich habe etwas anderes gefragt, die Suche funktioniert, Elemente sind in Ordnung, was ich brauche ist eine Methode, um die Elemente nach der Suche neu zu ordnen, müssen Sie nur den Link – agis

+0

mein schlechtes, ich dachte, es sei ein Problem mit 'ReferenceError'. Wm, die Dokumentation in der Isotopenseite spricht über' g etSortData' Parameter. Ich nehme an, du hast es schon versucht. – TCHdvlp

Antwort

2

wie Sie $ Behälter in die .load erklären, wird nur .load Funktion sieht es

zwei Lösungen, Sie var $ container = $() hinzuzufügen; so in den normalen js .load und .ready wird es Zugriff

oder Sie verschmelzen alle in die .ready Funktion:

$(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

Vielen Dank für Ihre Antwort, aber ich habe bereits eine Lösung dafür gefunden! – agis

3

konnte ich ein One-Shot-Beispiel zum Laufen bringen, indem das Hinzufügen von folgenden bis Ende Datei Ihre 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' }); 

Dies funktioniert nur erste Mal, wenn Sie auf search 1 klicken, zeigt aber das Konzept des Isotops Neustart gültig ist. Ich verstehe nicht genug, wie deine Filterung funktioniert, aber ich hoffe, dass dir das einen Ausgangspunkt gibt.

Es gibt ein Problem, dass der Content-Filter-Elemente display: none mit hide() oder fade() beseelt, so dass dies funktioniert nur, wenn die Haut Augenblick war (also habe ich auch den Filter hide(0) zu verwenden), z.B.

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

Ich habe dies in die [Geige] (http://jsfiddle.net/dynamyc/V2pQf/9/embedded/result/) geschrieben, aber es ist seltsam, weil es nur mit ** Search 1 ** funktioniert, wenn ich auf * klicke * Suche 2 ** funktioniert nicht richtig. Was es tun kann ist, etwas zu tun, wie wenn "Suche 1" angeklickt wird, die Elemente neu anordnen und wenn "Suche 2" angeklickt wird, ist zuerst, die Sucheingabe zurückzusetzen und danach die Suche durchzuführen und danach erneut elements.In meiner Meinung kann dies eine Lösung sein, die funktionieren kann. Was denken Sie? Ist das möglich ? – agis

+1

@Alecs: Ich kann Ihre Website nicht ordnungsgemäß mit JSFiddle testen, da sie die JS-Dateien von Ihrem Server herunterlädt und den JS-Test überschreibt. Die Änderung musste in filtercontent.js gehen, aber hier lief es auch nur auf ** Search 1 **. Wenn man das Social-Wall-Plugin betrachtet, ruft es kaum Isotope auf, außer um neue Elemente hinzuzufügen. Hast du versucht, die Social-Plugin-Autoren zu kontaktieren? –

+0

Ich habe das hinzugefügt, aber funktioniert nicht, können Sie einen Blick [Link] (http://v2.lesplayibiza.com/elements/), Ich habe die Entwickler des Plugins auch gefragt, aber sie geben nicht irgendwelche Hinweise nur um Geld zu bitten, dies zu tun.Ich habe eine ähnliche Frage [hier] (http://stackoverflow.com/questions/6738327/resorting-isotope-elements-after-search) gefunden und ich denke, das gleiche Konzept auf meinen Code anzuwenden, aber ich tue nicht Ich weiß, wie kann ich das in meinem Code machen, weil dort ein anderes Suchplugin verwendet wird. – agis