javascript - Jquery 查找多个匹配项

标签 javascript jquery find

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

相关文章:

javascript - 将键盘选项卡焦点设置到页面顶部/使用 JavaScript/jQuery 重置键盘焦点

jquery - 难以从 HTML 字符串中查找特定 Span 的内部文本

jQuery UI 日期选择器无法在 iOS 上运行

javascript - 无法设置属性innerHTML错误

javascript - 了解 AngularJS 中 $scope 的层次结构?

javascript - 如果超过某些行,如何将下一个和上一个按钮放在html表格下方以处理内容?

c++ - 按值排序的 std::find 和 std::any_of

用于查找系统调用的 Linux 命令

javascript - 如何创建一个矩形框,迫使我单击一个选项才能查看更多内容

javascript - 如何根据光标移动*到*的元素更改 jQuery .mouseleave() 的行为?