Jquery 搜索后同位素重新排序不起作用

Jquery 搜索后同位素重新排序不起作用,jquery,search,jquery-isotope,Jquery,Search,Jquery Isotope,我集成了一个jquery搜索插件来搜索同位素元素,该插件使用正则表达式根据搜索输入实时排序内容 同位素元素会自动更新(我使用wordpress插件从社交网络检索数据) 我的问题是,在执行搜索后,如何对元素重新排序 L.E:我通过使用其他插件解决了这个问题: 代码如下: $(document).ready(function () { $("#id_search").quicksearch(".dcsns-content .isotope-ite

我集成了一个jquery搜索插件来搜索同位素元素,该插件使用正则表达式根据搜索输入实时排序内容

同位素元素会自动更新(我使用wordpress插件从社交网络检索数据)

我的问题是,在执行搜索后,如何对元素重新排序

L.E:我通过使用其他插件解决了这个问题: 代码如下:

               $(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' });
}
            });
        });

通过在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' });
这仅在您第一次单击搜索1时有效,但表明重新启动同位素的概念是有效的。我不太了解你的过滤是如何工作的,但我希望这能给你一个起点

存在一个问题,内容过滤器使用
hide()
fade()
将项目设置为
显示动画:无
,因此这仅在隐藏是即时的情况下有效(因此我还将过滤器更改为使用
hide(0)


在.load中声明$container时,只有.load函数会看到它

两种解决方案,添加var$container=$();在正常的js中,so.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');
});

您正在使用
jQuery(window).load(function(){
why not
jQuery(document).ready
?可能您正在查找的元素在页面加载时还没有出现。此外,我在您的htmlsorry中没有看到任何
.wall outer
.stream
元素,但这对我没有帮助;我问了一些其他问题,搜索正在工作,元素还可以,我需要的是在搜索后重新排序元素的方法,你知道吗只需检查链接My bad,我认为这是
ReferenceError
的问题。Wmell,同位素站点中的文档讨论了
getSortData
参数。我想您已经准备好尝试它了。我已经改为document ready,但我尝试的每个方法仍然存在相同的错误:$container未定义。我已经将其放在b中但这很奇怪,因为如果我单击搜索2,只使用搜索1是不正常的。它可以工作的是,像单击“搜索1”时重新排序元素,以及单击“搜索2”时单击的第一件事是重置搜索输入,然后进行搜索,然后重新排序元素。在我看来,这可能是一个可行的解决方案。你认为如何?这可能吗?@Alecs:我无法使用JSFIDLE正确测试你的站点,因为它会从你的服务器上拉下JS文件并覆盖测试JS。modi你需要进入filtercontent.js,但这里它也只在搜索1上运行。查看社交墙插件,除了添加新项目外,它几乎没有调用同位素。你尝试过联系社交插件作者吗?我添加了这个,但不起作用,你可以看看,我也问过插件的开发者,但他们没有给出任何消息我只是要求钱来做这件事。我发现了一个类似的问题,我正在考虑在我的代码中应用相同的概念,但我不知道如何在我的代码中做到这一点,因为使用了另一个搜索插件。谢谢你的回答,但我已经找到了解决方案!
$(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');
});