Find "contains" 中的多个值变量
Multiple values variable inside Find "contains"
我的变量 returns 多个值,用逗号分隔,或者在 JSON 字符串化之后,用换行符分隔。
示例:
return mail // email1@gmail.com,email2@gmail.com,email3@live.com;
字符串化后:
var mail =
["email1@gmail.com",
"email2@gmail.com",
"email3@live.com"]
对于这 3 封电子邮件,我有另一个在我的数据中使用 find
的变量,例如:
$("#dat").contents().find("td:contains('" + mail + "')" ).siblings("td:nth-child(3)").map(function() { return $(this).text(); }).get();
我的数据:
<table id="dat">
<tr> <td>email3@live.com</td> <td>Name</td> <td>Project</td> </tr>
</table>
这适用于单个字符串变量(如果我只对 "email3@live.com" 使用 mail
,忽略其他两封电子邮件)。如果我的变量有多个值,是否可以这样做?
谢谢!
您的 mail
变量是一个数组,您必须遍历每个条目:
var mail =
["email1@gmail.com",
"email2@gmail.com",
"email3@live.com"]
mail.forEach(function(m) {
// now 'm' contains your email string
var result = $("#dat").contents()
.find("td:contains('" + m + "')" )
.siblings("td:nth-child(3)")
.map(function() { return $(this).text(); }).get();
// do something with result
}
您可能还想引入一个变量来存储结果
问题是 CSS“:contains()”选择器不提供与列表的匹配。您必须同时循环:您的 td 元素和列表中的电子邮件。
这已经在另一个答案中显示了。
但是我建议您根本不要使用 CSS ":contains()" 选择器,因为它已在 CSS3 规范中删除并且可能会导致额外的计算负载(因为只有 jQuery 无法使用浏览器实现):
var mail = ["email1@gmail.com",
"email2@gmail.com",
"email3@live.com" ]
$("#dat tr").each(function() {
if($.inArray($(this).first().html(), mail) {
$(this,':nth-child(3)').map(function() { return $(this).text(); }).get();
}
});
我的变量 returns 多个值,用逗号分隔,或者在 JSON 字符串化之后,用换行符分隔。
示例:
return mail // email1@gmail.com,email2@gmail.com,email3@live.com;
字符串化后:
var mail =
["email1@gmail.com",
"email2@gmail.com",
"email3@live.com"]
对于这 3 封电子邮件,我有另一个在我的数据中使用 find
的变量,例如:
$("#dat").contents().find("td:contains('" + mail + "')" ).siblings("td:nth-child(3)").map(function() { return $(this).text(); }).get();
我的数据:
<table id="dat">
<tr> <td>email3@live.com</td> <td>Name</td> <td>Project</td> </tr>
</table>
这适用于单个字符串变量(如果我只对 "email3@live.com" 使用 mail
,忽略其他两封电子邮件)。如果我的变量有多个值,是否可以这样做?
谢谢!
您的 mail
变量是一个数组,您必须遍历每个条目:
var mail =
["email1@gmail.com",
"email2@gmail.com",
"email3@live.com"]
mail.forEach(function(m) {
// now 'm' contains your email string
var result = $("#dat").contents()
.find("td:contains('" + m + "')" )
.siblings("td:nth-child(3)")
.map(function() { return $(this).text(); }).get();
// do something with result
}
您可能还想引入一个变量来存储结果
问题是 CSS“:contains()”选择器不提供与列表的匹配。您必须同时循环:您的 td 元素和列表中的电子邮件。 这已经在另一个答案中显示了。
但是我建议您根本不要使用 CSS ":contains()" 选择器,因为它已在 CSS3 规范中删除并且可能会导致额外的计算负载(因为只有 jQuery 无法使用浏览器实现):
var mail = ["email1@gmail.com",
"email2@gmail.com",
"email3@live.com" ]
$("#dat tr").each(function() {
if($.inArray($(this).first().html(), mail) {
$(this,':nth-child(3)').map(function() { return $(this).text(); }).get();
}
});