用于搜索类的JQuery优化

时间:2010-10-25 09:20:31

标签: jquery optimization

我左边有一些过滤器。每个过滤器都有一个id。该过滤器的id用于过滤某些在其类中具有过滤器ID的结果。

过滤器指产品的特征..例子

<a id="filter_colorRED">RED</a>

...

<li id="item4" class="filter_colorBLUE">Blah Blah</li>
<li id="item5" class="filter_colorRED ">Blah Blah</li>
<li id="item6" class="filter_colorRED filter_colorBLACK">Blah Blah</li>

我正在寻找找到应禁用哪些过滤器的最佳方法。禁用过滤器应该是可见项类中不存在的过滤器。

例如,如果应用了colorBlue,则应禁用BLACK和BLACK,因为只有具有BLUE类的<li>不包含RED或BLACK。

我唯一的想法是每个过滤器检查结果.hasclass(filter's id),但我认为这很差。还有其他想法吗?

1 个答案:

答案 0 :(得分:1)

简单方法:

$("a").click(function () {
  $("li").hide().hasClass(this.id).show();
});

您可以选择变体:

$("a").click(function () {
  var a = this;
  $("li").toggle(function() { return $(this).hasClass(a.id); });
});

toggle()接受一个返回true或false的函数,以显示或隐藏元素。您可以在toggle()函数中执行一些更复杂的计算。如果你只检查hasClass(),第一种方法就是更好的方法。