2016-11-28 22 views
0

尝试搜索大量成员列表(1200+)并查找哪些管理员添加了每个成员。我希望控制台返回由X添加的所有成员的名称数组,其中X是管理员的名称。这样我就可以编译一个电子表格来跟踪哪些成员被相应的管理员添加了。根据子元素的字符串匹配创建父元素的文本数组

示例HTML我正在使用。

<div class="_6a _5u5j _6b"> 
    <div class="fsl fwb fcb"><a href="">Jessica Smith</a></div> 
    <div class="_5aj7"> 
    <div class="_4bl9"> 
     <div class="_17tq">Model at Model/Actress</div> 
     <div class="fsm fwn fcg">Joined 
     <br>Added by Jane Doe <abbr title="Sunday, July 17, 2016 at 1:29pm" data-utime="1468772964" class="timestamp"><span class="timestampContent">about 4 months ago</span></abbr></div> 
    </div> 
    <div class="_4bl7 mrm"></div> 
    </div> 
</div> 

<div class="_6a _5u5j _6b"> 
    <div class="fsl fwb fcb"><a href="">Robyn Stevens</a></div> 
    <div class="_5aj7"> 
    <div class="_4bl9"> 
     <div class="_17tq">No Job</div> 
     <div class="fsm fwn fcg">Joined 
     <br>Added by Jane Doe <abbr title="Sunday, July 17, 2016 at 1:29pm" data-utime="1468772964" class="timestamp"><span class="timestampContent">about 2 months ago</span></abbr></div> 
    </div> 
    <div class="_4bl7 mrm"></div> 
    </div> 
</div> 

<div class="_6a _5u5j _6b"> 
    <div class="fsl fwb fcb"><a href="">Sarah West</a></div> 
    <div class="_5aj7"> 
    <div class="_4bl9"> 
     <div class="_17tq">Entertainer</div> 
     <div class="fsm fwn fcg">Joined 
     <br>Added by Jane Doe <abbr title="Sunday, July 17, 2016 at 1:29pm" data-utime="1468772964" class="timestamp"><span class="timestampContent">about 3 months ago</span></abbr></div> 
    </div> 
    <div class="_4bl7 mrm"></div> 
    </div> 
</div> 

而这里的jQuery的我想在控制台

$("div.fsm:contains('Jane Doe')").find("div.fsl a").each(function() { 
    console.log($(this).text()); 
}) 

执行但我不会在这里做任何进展。这里有一个小提琴,我在https://jsfiddle.net/w9vfq62r/3/玩弄任何帮助得到这个小提琴的例子工作将不胜感激。

+1

你想要的,而不是硬编码的管理员名称,找到一个通用查询? – Aruna

+0

理想情况下,这将是伟大的 – abracassabra

+1

是的,我正在这样做,几秒:-) – Aruna

回答

1

在这里你去,这将分析所有管理员很好,并将相应的成员追加到管理员数组中。

更新时间戳以及。

var admins = {}; 
 
var refText = 'Added by'; 
 
$('div.fsm').each(function() { 
 
    var self = $(this); 
 
    var addedByText = self.text().replace('\n', ' ').replace(/\s{2,}/, ' '); 
 
    var startIndex = addedByText.indexOf(refText) + refText.length; 
 
    var admin = $.trim(addedByText.substring(startIndex, addedByText.indexOf('about'))); 
 
    var member = self.closest('._6a').find('div.fsl a').text(); 
 
    
 
    if(!admins[admin]) { 
 
     admins[admin] = []; 
 
    } 
 
    
 
    admins[admin].push(member); 
 
    admins[admin].push(self.find('abbr').attr('title')); 
 
}); 
 

 
console.log(admins);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="_6a _5u5j _6b"> 
 
    <div class="fsl fwb fcb"><a href="">Jessica Smith</a></div> 
 
    <div class="_5aj7"> 
 
    <div class="_4bl9"> 
 
     <div class="_17tq">Model at Model/Actress</div> 
 
     <div class="fsm fwn fcg">Joined 
 
     <br>Added by Jane Doe <abbr title="Sunday, July 17, 2016 at 1:29pm" data-utime="1468772964" class="timestamp"><span class="timestampContent">about 4 months ago</span></abbr></div> 
 
    </div> 
 
    <div class="_4bl7 mrm"></div> 
 
    </div> 
 
</div> 
 

 
<div class="_6a _5u5j _6b"> 
 
    <div class="fsl fwb fcb"><a href="">Robyn Stevens</a></div> 
 
    <div class="_5aj7"> 
 
    <div class="_4bl9"> 
 
     <div class="_17tq">No Job</div> 
 
     <div class="fsm fwn fcg">Joined 
 
     <br>Added by Jane Doe <abbr title="Sunday, July 17, 2016 at 1:29pm" data-utime="1468772964" class="timestamp"><span class="timestampContent">about 2 months ago</span></abbr></div> 
 
    </div> 
 
    <div class="_4bl7 mrm"></div> 
 
    </div> 
 
</div> 
 

 
<div class="_6a _5u5j _6b"> 
 
    <div class="fsl fwb fcb"><a href="">Sarah West</a></div> 
 
    <div class="_5aj7"> 
 
    <div class="_4bl9"> 
 
     <div class="_17tq">Entertainer</div> 
 
     <div class="fsm fwn fcg">Joined 
 
     <br>Added by Jane Doe <abbr title="Sunday, July 17, 2016 at 1:29pm" data-utime="1468772964" class="timestamp"><span class="timestampContent">about 3 months ago</span></abbr></div> 
 
    </div> 
 
    <div class="_4bl7 mrm"></div> 
 
    </div> 
 
</div>

+0

这太神奇了!最后一个请求是否可以从''title属性获取添加日期/时间?并将其列在数组中的每个成员旁边?因此,像 '{ “李四”: “杰西卡·史密斯”, “星期天,2016年7月17日,在下午1:29” “罗宾·史蒂文斯”, “星期日年,2016年7月17日下午1:29” “Sarah West”,“2016年7月17日星期日下午1:29” ] }' – abracassabra

+0

好吧,现在就加上 – Aruna

+1

@LordTubington好了,请检查:-) – Aruna

0
$("div.fsm:contains('Jane Doe')").each(function() { 
    var txt = $(this).closest("._6a").find("div.fsl a").text(); 
    console.log(txt); 
}); 

滤波器所需的div,然后通过closest得到的包装,然后拿到链接

的文本
+0

工作在我的小提琴中,但是当我尝试在真实环境中使用它时,出现以下错误: '未捕获的错误:<![EX [[“尝试获取ID为\”%s \它不存在于页面上。“,”div.fsm:contains('Jane Doe')“]]]>' – abracassabra

+0

你可以在jsfiddle中重现产生这个错误的代码吗? – br3t

0

制造它的功能

demo

var memberss = getMembers("Jane Doe"); // function call to get array of members 
alert(memberss); 

function getMembers(adminName){ 
    var members = []; 
    $('div.fsm:contains("'+adminName+'")').each(function() { 
    var aMember = $(this).closest('._6a').find('.fsl a').text(); 
    members.push(aMember); 
    }); 
    return members; 
} 
相关问题