Javascript 如何使用jQuery查找数据类型中的特定字符串?
我正在动态地整理一个投资组合 第一个列出的项目有两个类别:“todd ao”和“soundelux”。顶部的过滤器按钮通过jQuery对项目进行排序,连接过滤器按钮的Javascript 如何使用jQuery查找数据类型中的特定字符串?,javascript,jquery,Javascript,Jquery,我正在动态地整理一个投资组合 第一个列出的项目有两个类别:“todd ao”和“soundelux”。顶部的过滤器按钮通过jQuery对项目进行排序,连接过滤器按钮的li类和特定项目的数据类型 由于过滤器按钮由一个类标记,因此每当我在数据类型参数中有两个类别时,jQuery脚本都不会识别数据类型中的每个特定单词 我需要一个was来修改我的jQuery,以允许数据类型中有多个单词,并且按钮仍然可以相应地排序 这是我的HTML标记: <!-- FILTER BUTTONS --> <
li
类和特定项目的数据类型
由于过滤器按钮由一个类标记,因此每当我在数据类型
参数中有两个类别时,jQuery脚本都不会识别数据类型
中的每个特定单词
我需要一个was来修改我的jQuery,以允许数据类型中有多个单词,并且按钮仍然可以相应地排序
这是我的HTML标记:
<!-- FILTER BUTTONS -->
<ul class="portfoliofilter">
<li class="all">
<a href="#">All</a>
</li>
<li class="todd-ao">
<a href="#">Todd-AO</a>
</li>
<li class="soundelux">
<a href="#">Soundelux</a>
</li>
</ul>
<!-- PROJECT LISTING -->
<ul id="portfoliolist3column">
<li class="portfolio" data-type="todd-ao soundelux">
<!--
THIS PROJECT WON'T SORT DUE TO DATA-TYPE
NOT SPECIFICALLY MATCHING FILTER LI CLASS
-->
</li>
<li class="portfolio" data-type="todd-ao">
<!-- SORTS -->
</li>
<li class="portfolio" data-type="soundelux">
<!-- SORTS -->
</li>
</ul>
是否有方法获取$数据。查找
只需查找字符串,而不是与过滤器类
完全匹配
编辑
下面是@pimvdb提供的最终上下文代码
jQuery('.portfoliofilter li').click(function(e) {
jQuery(".portfoliofilter li a").addClass("portfoliobutton_noselect");
jQuery(".portfoliofilter li a").removeClass("portfoliobutton");
jQuery(this).children('a').removeClass("portfoliobutton_noselect");
jQuery(this).children('a').addClass("portfoliobutton");
var filterClass = jQuery(this).attr('class');
if (filterClass == 'all') {
var $filteredData = $data.find('.portfolio');
} else {
var $filteredData = $data.find(".portfolio").filter(function() {
return ~jQuery(this).data("type").split(" ").indexOf(filterClass);
});
}
jQuery($list).quicksand($filteredData, {
duration: 500,
easing: 'swing',
adjustHeight: 'dynamic',
enhancement: function() {
}
}, function(){
addPrettyPhoto();
});
return false;
});
您可以将函数传递给。查找并拆分数据-
项:。这是一个想法的示例,不是您案例的精确实现,但我想很容易将其粘贴到您的代码中:
$("...").find(function() {
return ~$(this).data("items").split(" ").indexOf("b");
}).css("background-color", "red");
编辑:我认为这记录了正确的日志:
jQuery('.portfoliofilter li').click(function() {
var x = jQuery(this).attr("class");
console.log($("#portfoliolist3column").find(".portfolio").filter(function() {
return ~jQuery(this).data("type").split(" ").indexOf(x);
}));
});
您有一个.portfolio[data type=
选择器,但在HTML中没有这样的元素(它们都有该类和数据类型
属性).对吗?你说得对。我在这里发帖时不小心删除了它。我把它加了回去。它在网站上。我一直在处理这个问题,有一次它在JSFIDLE上工作,但相同的代码在网站上不起作用。(我也检查了缓存等)。您可以提供的任何具体细分都会非常有用。例如,这在JSFIDLE中工作:if(filterClass='all'){var$filteredata=$data.find('.portfolio');}else{var$filteredata=$('li.portfolio').filter(函数(){return~$(this.data)('type')).split(“”.indexOf(“”+filterClass+“”);});}
但不是在直播网站上。@Stephen C:也许你需要使用$data。在那里也可以找到。你正在尝试过滤那些元素,不是吗?据透露,我对js不是很了解。这是我现在所拥有的。我尝试了一些变体,但运气不佳。否则{var$filteredData=$data.find(function(){return$('.portfolio').data(“type”).split(“”.indexOf(“”+filterClass+“”);});}
@Stephen C:这一个似乎记录了正确的数据。请参阅我的编辑。
jQuery('.portfoliofilter li').click(function() {
var x = jQuery(this).attr("class");
console.log($("#portfoliolist3column").find(".portfolio").filter(function() {
return ~jQuery(this).data("type").split(" ").indexOf(x);
}));
});