2016-03-02 48 views
0

我使用这个变量得到一个或多个匹配我需要的值。查找:变量值不匹配

var mail = $("#dat").contents().find("td:contains('" + name + "')").siblings("td:nth-child(2)").map(function() { return $(this).text(); }).get(); 

数据是这样的:

<tr><td> Name Second-Name </td><td>Email</td></tr> 
<tr><td> Name Second-Name </td><td>Email 2</td></tr> 
<tr><td> Name Second-Name Third-Name </td><td>Email 3</td></tr> 

当我使用Name Second-Namename值,这个变量返回EmailEmail 2Email 3,甚至Third-Name最后表行内。我需要的是一个只返回EmailEmail 2的变量,忽略最后一行 - 我有另一个名字。

我该怎么做?谢谢!

+0

所以基本上'.find( “TD:包含('” +姓名+ “ '):不是(:包含('” + OTHER_NAME + “'))”)' – adeneo

+0

你在寻找一个[精确匹配](http://stackoverflow.com/questions/15364298/make-jquerys-contains-select-only-exact-string)而不是一个包含? – Stryner

+0

谢谢!不,adeneo,我的数据比这更复杂,我没有所有'other_names'在我的变量上使用 –

回答

1

试试这个:

var name = " Name Second-Name "; 
var mail = $('td').filter(function(index) { return $(this).text() === name }).siblings("td:nth-child(2)").map(function() { return $(this).text(); }).get(); 

小提琴:http://jsfiddle.net/ksL6opd7

+0

谢谢,Fabius,但是这段代码得到了空值返回 –

+0

@ZecaNovaes刚注意到'​​'和'Name Second-Name'和''。如果你放一个空格,试着用'var name ='Name Second-Name“'; – Fabius

+0

这里同样的问题。我不知道为什么过滤我的数据的唯一方法是使用find:contains –