jQuery |删除li标签
我正在寻找解决方案以删除使用javascript数组过滤的<li>
标签。jQuery |删除li标签
变种mygroups = [ “1”, “8”, “3”, “4”, “5”]
实施例(输入):
<li><div>1 element. Bla bla bla</div></li>
<li><div>2 element. Bla bla bla. This is my <span>post</span> into new group</div></li>
<li><div>3 element. Bla bla bla. Another one</li>
<li><div><a href="/groups/viewgroup/1-first-group">First group</a></div></li>
<li><div>5 element. Bla bla bla. This is my <span>new post</span></div></li>
<li><div>6 element. <img alt="groups.wall" class="newsfeed-icon" src="/assets/favicon/default.png"></div></li>
<li>7 element.</li>
<li><div><a href="/groups/viewgroup/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="/groups/viewgroup/5-tttt-group">First group</a></div></li>
如何获得这个输出(删除所有不包含mygroups的实例):
<li><div><a href="/groups/viewgroup/1-first-group">First group</a></div></li>
<li><div><a href="/groups/viewgroup/8-second-group">First group</a></div></li>
<li><div><a href="/groups/viewgroup/5-tttt-group">First group</a></div></li>
谢谢!
编辑:更新以符合您的新要求。
更新了jsFiddle示例。
我用jQuery的代码是:
$(function() {
var mygroups = ["1", "8", "3", "4", "5"];
$('li').each(function() {
var $li = $(this);
// if you only want li's with an <a> link to a group page which matches one
// in your mygroups list...
var $a = $li.find('a[href^="/groups/viewgroup/"]');
// if we find a matching <a> (whose href attribute starts with "/groups/viewgroup/")
if ($a.length) {
// extract this <a>'s group number using a regular expression
var groupNum = $a.attr('href').replace(/^\/groups\/viewgroup\/(\d+)-.+$/gi, '$1');
// remove the <li> if group number is not in our allowed array
if ($.inArray(groupNum, mygroups) == -1) $li.remove();
} else {
$li.remove(); // no <a> found, so remove this <li>
}
});
});
我试图评论这说明大部分线路,让我知道如果有什么是没有意义的。您可以使用此ChopApp page来点击行,并且比在StackOverflow中可以更轻松地添加注释/问题。如果你使用这个,请在这里留下评论,我会在那里回答你的问题。
谢谢!我的任务有小的变化。请检查。 – user889349
你真的应引入某种标志(例如一个类名或部分data-
属性),以确定你没有显示<li>
节点。这样一个详细的检查需要扫描每个<li>
的整个HTML,这不是一个好的做法。但是,它可能看起来像这样:
$('li').each(function(_, node) {
if(!/group|groups/.test(node.innerHTML))
$(node).remove();
});
的
感谢'功能(_,节点)',我从来没有看到它 –
谢谢!我的任务有小的变化。请检查。 – user889349
可能重复[删除李标签2](http://stackoverflow.com/questions/7064012/remove-li-tags-2 ) – NGLN