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