我的变量返回多个值,用逗号分隔,或者在JSON字符串化后用换行符返回。
示例:
return mail // email1@gmail.com,email2@gmail.com,email3@live.com;
在Stringify之后:
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>
这适用于单个字符串变量(如果我仅将mail
用于“email3@live.com”,忽略其他两封电子邮件)。如果我的变量有多个值,可以这样做吗?
谢谢!
答案 0 :(得分:1)
您的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
}
您可能还想引入一个变量来存储结果
答案 1 :(得分:1)
问题是CSS&#34;:contains()&#34; selector不提供与列表的匹配。你必须循环两个:你的td元素和列表中的电子邮件。 这已经在另一个答案中显示出来了。
但是我建议你不要使用CSS&#34;:contains()&#34;选择器,因为它已在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();
}
});