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()
我正在使用 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()