2013-05-17 9 views
6

Zintegrowałem wtyczkę wyszukiwania jquery, aby przeszukać elementy izotopów, wtyczka używa wyrażeń regularnych do sortowania treści w czasie rzeczywistym na podstawie danych wejściowych wyszukiwania.Zmiana kolejności izotopów po wyszukiwaniu nie działa

elementy izotopowe aktualizują się automatycznie (Używam wordpress wtyczki, która pobiera dane z sieci społecznych)

Moje pytanie brzmi: w jaki sposób mogę zmienić kolejność elementów po wyszukiwanie jest wykonywane?

LE: I został rozwiązany TO stosując inne plugin dla SEARCHING: Oto kod:

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

używasz 'jQuery (okno) .load (function() {' dlaczego nie 'jQuery (document) .ready'? Może szukane elementy nie są jeszcze obecne przy ładowaniu strony.Nie widzę żadnego elementu' .wall-outer' lub '.stream' w twoim html – TCHdvlp

+0

przepraszam, ale to mi nie pomaga, zapytałem o coś innego, wyszukiwanie działa, elementy są w porządku, potrzebna jest metoda zmiany kolejności elementów po wyszukiwaniu, wystarczy sprawdzić link – agis

+0

moje złe, I myślałem, że to jest problem z 'ReferenceError' .Wmell, dokumentacja na stronie izotopowej mówi o g Parametr etSortData. Przypuszczam, że już to wypróbowałeś. – TCHdvlp

Odpowiedz

2

jak zadeklarować $ pojemnik do .load, funkcja tylko .load będą widzieć

dwa rozwiązania, należy dodać var ​​$ pojemnik = $(); w normalnych js tak .load i .ready niego dostęp

lub scalić wszystko w .ready funkcję:

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

Dziękuję za odpowiedź, ale już znalazłem rozwiązanie tego problemu! – agis

3

udało mi się dostać jeden strzał przykład działa poprzez dodanie następujących do końca plik 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' }); 

ta działa tylko przy pierwszym kliknięciu na search 1, ale pokazuje pojęcie ponownym izotop jest prawidłowy. Nie rozumiem w wystarczającym stopniu tego, jak działa filtrowanie, ale mam nadzieję, że da ci to punkt wyjścia.

Istnieje problem, że filtr treści animuje przedmiotów do display: none użyciu hide() lub fade(), więc ta działa tylko wtedy, gdy hide był natychmiastowy (tak, ja też zmienić filtr używać hide(0)) np

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

Umieściłem to w [skrzypcach] (http://jsfiddle.net/dynamyc/V2pQf/9/embedded/result/), ale to dziwne, ponieważ działa z tylko ** Wyszukiwanie 1 ** jeśli kliknę * * Wyszukiwanie 2 ** nie działa poprawnie. Może to zrobić, gdy klikniesz "szukaj 1", zmienić kolejność elementów, a gdy klikniesz "szukaj 2", najpierw zresetuj dane wejściowe wyszukiwania, a potem poszukaj, a potem ponownie uporządkuj elementy. W moim opinia może to być rozwiązanie, które może działać. Co myślisz? czy to możliwe ? – agis

+1

@Alecs: Nie mogę poprawnie przetestować witryny za pomocą JSFiddle, ponieważ powoduje ona usunięcie plików JS z serwera i nadpisanie testu JS. Modyfikacja wymagała przejścia do pliku filtercontent.js, ale tutaj również działała tylko na ** Wyszukaj 1 **. Patrząc na wtyczkę społecznościową, ledwo wywołuje on izotop, z wyjątkiem dodawania nowych elementów. Czy próbowałeś skontaktować się z twórcami wtyczek społecznościowych? –

+0

Dodałem to, ale nie działa, możesz rzucić okiem [link] (http://v2.letsplayibiza.com/elements/), zapytałem również twórców wtyczki, ale oni nie dają wszelkie oznaki proszą o pieniądze.Znalazłem podobne pytanie [tutaj] (http://stackoverflow.com/questions/6738327/resorting-isotope-elements-after-search) i myślę, aby zastosować tę samą koncepcję w moim kodzie, ale nie mówię " t wiem, jak mogę to zrobić w moim kodzie, ponieważ używa się innej wtyczki wyszukiwania. – agis

Powiązane problemy