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