2016-03-02 3 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-Name как name значение, эта переменная возвращает Email, Email 2 и Email 3, даже с Third-Name внутри последней строки таблицы. Мне нужна переменная, которая возвращает только Email и Email 2, игнорируя последнюю строку - где у меня есть другое имя.

Как я могу это сделать? Благодаря!

+0

Так в основном '.find ("тд: содержит ('" + имя + " '): нет (: содержит ('" + 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(); 

Fiddle: http://jsfiddle.net/ksL6opd7

+0

Спасибо, Fabius, но этот код получил нулевое значение –

+0

@ZecaNovaes Просто заметили, что между' ' и 'Name Second-Name' и' '. Если вы поместили пробел, попробуйте с именем 'var name =" Name Second-Name "'; – Fabius

+0

Такая же проблема здесь. Я не знаю, почему единственный способ отфильтровать мои данные - использовать find: содержать –

Смежные вопросы