javascript - 用于多个类的 jQuery 过滤器,在匹配时隐藏 div

标签 javascript jquery html css

我有多个 div.item。 单击Classfilter-提交按钮所有.item-元素,这些元素也至少有一个类存储在dateClasses-数组中(例如['28.09.2015', '29.09.2015']), 应该被隐藏。

回顾一下,当用户点击按钮时,带有绿色边框的元素应该被隐藏。

重要提示:dateClasses 数组值可能会动态变化。而且我必须检查一个数组。

$(document).ready(function() {
	  classFilter();
	});


	function classFilter() {
	  $('#filter').click(function(e) {
	    e.preventDefault();

	    var dateClasses = ['28.09.2015', '29.09.2015']; //Hide the item-div if one these classes is applied

	    $('.item').filter(function() {
	      $(this).hasClasses(dateClasses)
	    }).addClass('hide-event');
	  });
	}

	$.fn.extend({
	  hasClasses: function(selectors) {
	    var self = this;
	    for (var i in selectors) {
	      console.log($(self).hasClass(selectors[i]));
	      if ($(self).hasClass(selectors[i])) {
	        return true;
	      }
	    }
	    return false;
	  }
	});
.hide-event {
  display: none;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="item 28.09.2015" style="border: 10px solid green">
  Hide this if class is in array</div>
<div class="item 29.09.2015" style="border: 10px solid green">
  Hide this if class is in array</div>
<div class="item 30.09.2015" style="border: 10px solid blue">
  Hide this if class is in array</div>
<input type="submit" name="filter" value="Classfilter" id="filter">

最佳答案

NOTE: You can't use dot in a classname and should parse those names to use another character like - or _ before they get put into the dom

您没有在 filter() 中返回任何内容

修复过滤器:

$('.item').filter(function() {
     return  $(this).hasClasses(dateClasses);
}).addClass('hide-event');

可能有更简单的方法来实现你想要的,但这是代码显示的根本问题,无需重写你的插件

一个非常简单的方法是:

$('.item').filter('.' + dateClasses.join(',.')).addClass('hide-event');

Demo with valid class names

关于javascript - 用于多个类的 jQuery 过滤器,在匹配时隐藏 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32812327/

相关文章:

javascript - 在 AJAX (XMLHttpRequest) 中使用 eventListener 还是 readyStateChange 更好?

javascript - 单击子级不会触发父级单击

javascript - 无法在单选按钮中设置选中属性(表内的单选按钮)

javascript - 使用 Jquery 警报对话框插件进行链接确认

javascript - div 宽度和高度不适合图像

javascript - 如何克服名为 “length” jQuery 的数组键的问题

javascript - 如何在我的函数运行时取消绑定(bind)或防止其他点击事件发生?

javascript - 打开相关链接

html - 背景的不透明度和颜色过渡?

html - 页脚位于 DIV 下