我正在使用 Jquery 在我的站点中查找用户的电子邮件,但我不知道如何找到具有相同名称的用户的电子邮件。
使用这段代码,我的变量只返回一个字符串值。
var mail = $("#dat").contents().find("td:contains('" + name + "')" ).siblings("td").eq(1).text();
如何在这个find
事件中获取所有匹配的字符串?
谢谢!
编辑:我的代码没有任何数据的 HTML 标记,我正在使用 Google 电子表格获取值。
假设有一张 table :
<tr><td>Name 1</td><td>mail1</td></tr>
<tr><td>Name 2</td><td>mail2</td></tr>
<tr><td>Name 1</td><td>mail3</td></tr>
如果我使用包含“Name 1”的find
,我的变量应该返回mail1, mail3
。
最佳答案
要获取所有匹配行的第二列,请使用nth-child
。
要获取数组中的所有值,您可以使用 map()
和 get()
var name = 'Name 1';
var mail = $("#dat").contents()
.find("td:contains('" + name + "')" )
.siblings("td:nth-child(2)")
.map(function() {
return $(this).text();
}).get()
document.body.innerHTML = '<pre>' + JSON.stringify(mail, 0, 4) + '</pre>';
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<table id="dat">
<tr><td>Name 1</td><td>mail1</td></tr>
<tr><td>Name 2</td><td>mail2</td></tr>
<tr><td>Name 1</td><td>mail3</td></tr>
</table>
find 的查询也可以更具体,这样就不需要使用 siblings
var mail = $("#dat").contents()
.find("tr:has(td:contains('" + name + "')) td:nth-child(2)" )
.map(function() {
return $(this).text();
}).get()
关于javascript - Jquery 查找多个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35688443/