Jquery找到多个匹配项

时间:2016-02-28 21:22:52

标签: javascript jquery find

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

使用此代码,我的变量只返回一个字符串值。

var mail = $("#dat").contents().find("td:contains('" + name + "')" ).siblings("td").eq(1).text();

如何获取此find事件中匹配的所有字符串?

谢谢!

编辑:我的代码没有任何HTML数据标记,我正在使用Google电子表格来获取值。

想象一下有一张表:

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

如果我使用包含“名称1”的find,我的变量应返回mail1, mail3

2 个答案:

答案 0 :(得分:1)

您应该稍微更改一下代码:

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

检查演示 - Fiddle

答案 1 :(得分:1)

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