Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/362.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jQuery查找数据类型中的特定字符串?_Javascript_Jquery - Fatal编程技术网

Javascript 如何使用jQuery查找数据类型中的特定字符串?

Javascript 如何使用jQuery查找数据类型中的特定字符串?,javascript,jquery,Javascript,Jquery,我正在动态地整理一个投资组合 第一个列出的项目有两个类别:“todd ao”和“soundelux”。顶部的过滤器按钮通过jQuery对项目进行排序,连接过滤器按钮的li类和特定项目的数据类型 由于过滤器按钮由一个类标记,因此每当我在数据类型参数中有两个类别时,jQuery脚本都不会识别数据类型中的每个特定单词 我需要一个was来修改我的jQuery,以允许数据类型中有多个单词,并且按钮仍然可以相应地排序 这是我的HTML标记: <!-- FILTER BUTTONS --> <

我正在动态地整理一个投资组合

第一个列出的项目有两个类别:“todd ao”和“soundelux”。顶部的过滤器按钮通过jQuery对项目进行排序,连接过滤器按钮的
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);
  }));
});