使用javascript数组去除li标签 [英] Remove li tags using javascript array

查看:101
本文介绍了使用javascript数组去除li标签的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找解决方案,以移除使用javascript数组过滤的< li> 标签。

数组:

  var mygroups = [1,8,3,4,5] 
$ / code>

示例(输入):

 < li>< div> 1个元素。< / div>< / li> 
< li>< div> 2元素。这是我的< span>帖子< / span>进入新群组< / div>< / li>
< li>< div> 3元素。另一个< / li>
< li>< div>
< a href =javascript:void(0);>演员< / a>
< a href =/ groups / viewgroup / 1-first-group>第一组< / a>
< / div>
< / li>
< li>< div>< a href =javascript:void(0);>演员< / a>
< a href =/ groups / viewgroup / 10-ten-group>十组< / a> 5组件。这是我的< span>新文章< / span>< / div>< / li>
< li>
< div> 6元素。 < a href =/ j1.5 / index.php / jomsocial / 63-zzz / profile>演员< / a>< / div>
< div>< a href =/ groups / viewgroup / test / 5-second-group>其他< / a>< / div>
< / li>
< li> 7元素。< / li>
< li>< div>< a href =/ groups / viewgroup / test / 8-second-group>第一组< / a>< / div>< / li>
< li>< div>< a href =/ groups / viewgroup / 16-other-group>第一群< / a>< / div>< / li>
< div>< div>< a href =/ j1.5 / index.php?option = com_community& view = groups& task = viewgroup& groupid = 1& Itemid = 4> My其他群组< / a>< / div>< / li>

如何得到这个输出(移除不包含锚定数组中的所有实例):

 < li>< div> 
< a href =javascript:void(0);>演员< / a>
< a href =/ groups / viewgroup / 1-first-group>第一组< / a>
< / div>
< / li>
< li>
< div> 6元素。 < a href =/ j1.5 / index.php / jomsocial / 63-zzz / profile>演员< / a>< / div>
< div>< a href =/ groups / viewgroup / test / 5-second-group>其他< / a>< / div>
< / li>
< li>< div>< a href =/ groups / viewgroup / test / 8-second-group>第一组< / a>< / div>< / li>
< div>< div>< a href =/ j1.5 / index.php?option = com_community& view = groups& task = viewgroup& groupid = 4& Itemid = 4> My其他群组< / a>< / div>< / li>

此代码无法正常工作:

<$ $($ a $)($ a $);
if(!a .length)
return true;

var text = a.attr('href')。split('/')[3];
text = text.substring( 0,text.indexOf(' - '));
if($ .inArray(text,mygroups)> = 0)
返回false;

返回true;
})。remove();

而这个人也没有这个工作:



< ($(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();


解决方案

$ $ $ $ $ $ $(pre $ $ $ $ $ $ $ $ $ $ $ $如果(!a.length)
返回true,
var a = $(this).find('a');
返回true;

var text = /(\d+)-/.exec(a.attr('href'))[1];
if($ .inArray(text,mygroups)> = 0)
return false;

return true;
))。remove();

它所有的li,然后筛选出与数组匹配的值并删除剩下的值。



http://jsfiddle.net/8AmNR/5/


I'm searching a solution to remove <li> tags filtered using javascript array.

Array:

var mygroups=["1","8","3","4","5"]

Example (input):

<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>

How to get this output (Remove all instances which do not contain group in array in anchor):

<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>

This code is not working right:

    $('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();

And this one does the job neither:

 $('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();

解决方案

This seems to do what you want. It's not the tidiest code in the world though:

$('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();

It's getting all the li's, then filtering out any that have a matching value to the array and removing the ones that are left.

http://jsfiddle.net/8AmNR/5/

这篇关于使用javascript数组去除li标签的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆