我在显示div时遇到问题,其中div有三个我需要匹配的选择器。这些是典型的:
<div class="pinfo draft sept-2010">...</div>
<div class="pinfo published feb-2011">...</div>
etc...
总是pinfo
后面是审核状态(已发布或草稿),然后是时间范围(月份+年)
这就是我目前所拥有的:
// Hide all rows
$(".pinfo").hide();
// Now, show those rows where the selectors are in the filters built
for (idx in $cls)
{
console.log('filter: '+$cls[idx]);
$('.pinfo').filter($cls[idx]).show();
}
其中$ cls是一个字符串数组。字符串是类选择器,然后由用户从输入表单中进行选择。例如:
$cls = [".Draft .sept-2011",
".Published .sept-2011"]
我在显示div时遇到问题,其中div有三个我需要匹配的选择器。
感谢任何帮助。
谢谢! 埃里克
答案 0 :(得分:1)
for..in
循环。仅在对象上使用它们,并且仅在hasOwnProperty
上使用它们。你可以在这里使用jQuery的$.each
循环遍历数组。".Draft .sept-2011"
这样的选择器说“查找具有类sept-2011
的元素,其具有类Draft
的祖先元素。您可以组合多个类选择器:您想要的是.Draft.sept-2011
所以你的代码可能如下所示:
$cls = [".Draft.sept-2011",
".Published.sept-2011"]
var $pinfo = $('.pinfo').hide();
$.each($cls, function(idx, val) {
$pinfo.filter(val).show();
});
请注意,为了提高性能,我还缓存了$('.pinfo')
选择器调用。
答案 1 :(得分:0)
请改为尝试:
$('.pinfo').parent().find($cls[idx]).show();