Jquery 查找多个匹配项

Jquery find with multiple matches

我正在使用 Jquery 在我的站点中查找用户的电子邮件,但我不知道如何找到具有相同名称的用户的电子邮件。

使用这段代码,我的变量 return 只有一个字符串值。

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>

如果我使用 find 包含 "Name 1",我的变量应该 return mail1, mail3.

您应该将代码稍微更改为:

mail = $("#dat").contents().find("td:contains('" + name + "')" ).next().text();

查看演示 - Fiddle

要获取所有匹配行的第二列,请使用 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>

查找的查询也可以更具体,这样就不需要使用 siblings

var mail = $("#dat").contents()
                    .find("tr:has(td:contains('" + name + "')) td:nth-child(2)" )
                    .map(function() { 
                        return $(this).text(); 
                    }).get()