2013-05-17 3 views
6

Я интегрировал плагин поиска jquery для поиска по изотопным элементам, плагин использует регулярное выражение для сортировки контента в режиме реального времени на основе ввода поиска.isotope reorder после поиска не работает

изотопные элементы автоматически обновление (я использую Wordpress плагин, который извлекает данные из социальных сетей)

Мой вопрос, как я могу изменить порядок элементов после того, как выполняется поиск?

LE: Я решил эту с помощью других плагин для SEARCHING: Вот код:

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

вы используете 'JQuery (окно) .load (функция() {' почему а не 'jQuery (document) .ready'? Возможно, элементы, которые вы ищете, еще не присутствуют при загрузке страницы. Кроме того, я не вижу никаких элементов' .wall-outer' или '.stream' в вашем html – TCHdvlp

+0

извините, но это не помогает мне, я спросил что-то еще, поиск работает, элементы в порядке, мне нужен метод, чтобы изменить порядок элементов после поиска, вам просто нужно проверить ссылку – agis

+0

мой плохой, я подумал, что это проблема с «ReferenceError». Wmell, документация на сайте изотопа говорит о 'g etSortData'. Полагаю, вы все это пробовали. – TCHdvlp

ответ

2

, как вы объявите $ контейнера в .load только .load функция будет видеть, что это

два решения, добавьте вар $ контейнер = $(); в нормальных JS так .load и .ready будут получать доступ к этому

или объединить все в .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

Спасибо за ваш ответ, но я уже нашел решение для этого! – agis

3

Я был в состоянии получить пример один выстрел работает, добавив следующее в конце файл 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' }); 

Это работает только первый раз, когда вы щелкаете на search 1, но показывает понятие перезапуска изотопа является действительным. Я недостаточно понимаю, как работает ваша фильтрация, но я надеюсь, что это дает вам отправную точку.

Существует проблема в том, что фильтр содержимого одушевляет элементы в display: none с помощью hide() или fade(), так это работало только если шкура была мгновенной (так же я поменял фильтр использовать hide(0)), например,

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

Я поместил это в [скрипку] (http://jsfiddle.net/dynamyc/V2pQf/9/embedded/result/), но это странно, потому что работает только с ** Поиск 1 **, если я нажимаю * * Поиск 2 ** не работает должным образом. То, что это может сработать, - это что-то вроде того, когда нажата кнопка «Поиск 1», переупорядочивая элементы и при нажатии «Поиск 2» первое, что нужно, - сбросить ввод поиска и после поиска, а после этого снова изменить элементы. В моем мнение это может быть решением, которое может работать. Как вы думаете? Это возможно ? – agis

+1

@Alecs: Я не могу правильно проверить ваш сайт с помощью JSFiddle, поскольку он вытаскивает JS-файлы с вашего сервера и перезаписывает тестовый JS. Модификации необходимо было внести в filtercontent.js, но здесь он также работал только на ** Поиск 1 **. Заглядывая в плагин социальной стены, он едва называет изотоп, за исключением добавления новых элементов. Вы пытались связаться с социальными плагинами? –

+0

Я добавил это, но не работает, вы можете посмотреть [link] (http://v2.letsplayibiza.com/elements/), я также попросил разработчиков плагина, но они не дают любые показания просто требуют денег для этого.Я нашел аналогичный вопрос [здесь] (http://stackoverflow.com/questions/6738327/resorting-isotope-elements-after-search), и я думаю применить такую ​​же концепцию в своем коде, но я не знаю, я знаю, как это сделать в моем коде, потому что используется другой плагин поиска. – agis

Смежные вопросы