我正在搜索解决方案,以删除使用javascript数组过滤的<li>
个标记。
阵列:
var mygroups=["1","8","3","4","5"]
示例(输入):
<li><div>1 element.</div></li>
<li><div>2 element. This is my <span>post</span> into new group</div></li>
<li><div>3 element. Another one</li>
<li><div>
<a href="javascript:void(0);">Actor</a>
<a href="/groups/viewgroup/1-first-group">First group</a>
</div>
</li>
<li><div><a href="javascript:void(0);">Actor</a>
<a href="/groups/viewgroup/10-ten-group">Ten group</a>5 element. This is my <span>new post</span></div></li>
<li>
<div>6 element. <a href="/j1.5/index.php/jomsocial/63-zzz/profile">Actor</a></div>
<div><a href="/groups/viewgroup/test/5-second-group">Group other</a></div>
</li>
<li>7 element.</li>
<li><div><a href="/groups/viewgroup/test/8-second-group">First group</a></div></li>
<li><div><a href="/groups/viewgroup/16-other-group">First group</a></div></li>
<li><div><a href="/j1.5/index.php?option=com_community&view=groups&task=viewgroup&groupid=1&Itemid=4">My other group </a></div></li>
如何获取此输出(删除锚中数组中不包含group的所有实例):
<li><div>
<a href="javascript:void(0);">Actor</a>
<a href="/groups/viewgroup/1-first-group">First group</a>
</div>
</li>
<li>
<div>6 element. <a href="/j1.5/index.php/jomsocial/63-zzz/profile">Actor</a></div>
<div><a href="/groups/viewgroup/test/5-second-group">Group other</a></div>
</li>
<li><div><a href="/groups/viewgroup/test/8-second-group">First group</a></div></li>
<li><div><a href="/j1.5/index.php?option=com_community&view=groups&task=viewgroup&groupid=4&Itemid=4">My other group </a></div></li>
此代码无效:
$('li').filter(function() {
var a = $(this).find('a');
if (!a.length)
return true;
var text = a.attr('href').split('/')[3];
text = text.substring(0, text.indexOf('-'));
if ($.inArray(text , mygroups) >= 0)
return false;
return true;
}).remove();
这个人既不做这个工作:
$('li').filter(function() {
if($(this).is('*:has(a[href|=/group/viewgroup/])') {
var href = $(this).find('a').attr('href'),
trail = href.split('/')[3],
number = + /(\d+)-/.exec(trail)[1];
return $.inArray(myarray, +number) == -1;
}
return true;
}).remove();
答案 0 :(得分:3)
这似乎做你想要的。尽管如此,它并不是世界上最整洁的代码:
$('li').filter(function() {
var a = $(this).find('a');
if (!a.length)
return true;
var text = /(\d+)-/.exec(a.attr('href'))[1];
if ($.inArray(text , mygroups) >= 0)
return false;
return true;
}).remove();
它获取所有的li,然后过滤掉任何具有匹配值的数组并删除剩下的那些。
答案 1 :(得分:1)
如何使用过滤功能。
在这种情况下,您选择所有li
并过滤掉所需的一个。
$('li').filter(function(index){
if(/*condition applied*/){
....
}
});
答案 2 :(得分:0)
这有效
$("li").each(function() {
if($(this).find("a").size() == 0) {
$(this).remove();
};
});
答案 3 :(得分:0)
$('li').filter(function() {
if($(this).is('*:has(a[href|=/group/viewgroup/])') {
var href = $(this).find('a').attr('href'),
trail = href.split('/')[3],
number = + /(\d+)-/.exec(trail)[1];
return $.inArray(myarray, +number) == -1;
}
return true;
}).remove();