2010-11-11 2 views
0
<table> 
    <tr><td> 
     <div><img src="1.jpg">text<span class="get">aa</span> <span class="click">Get value</span></div></div></td></tr> 
    <tr><td> 
     <div><img src="2.jpg">text<span class="get">bb</span> <span class="click">Get value</span></div></td></tr> 
    <tr><td><div><img src="1.jpg">text<span class="get">cc</span> <span class="click">Get value</span></div></div> 
     </td></tr> 
</table> 

Как получить самое близкое значение класса при щелчке по клику?Поиск ближайшего значения элемента jquery

$('.click').click(function() { 
    $(this).each(function() { 
     $('#sample').text($(document).closest('div').find('.get').text()); 
    }); 
}); 

это не работает, он вернется пустой ..

Любая идея, почему?

+0

Что вы подразумеваете под словом «ближайший»? – zerkms

+0

Если вы видите мои html-коды, есть несколько экземпляров класса «get» и «click», поэтому всякий раз, когда я нажимаю класс «click», класс «ge» t, ближайший к классу «get», должен получить отображаемое значение. – SOer

+0

«ближайший» выбирает ближайшего соответствующего предка DOM, это то, что вы собираетесь делать? http://api.jquery.com/closest/ Не смотря слишком внимательно, я думаю, что @zerkms может быть на правильном пути со своими братьями и сестрами –

ответ

3
$('.click').click(function() { 
    $('#sample').text($(this).siblings('.get').text()); 
}); 

Здесь работает образец: http://jsfiddle.net/rcXka/

+0

Да, вы не можете найти братьев и сестер с ближайшим, не так ли? – jcolebrand

+0

@ drachenstern: я ставлю - нет. Во всяком случае, это рабочий образец на jsfiddle ;-) – zerkms

+2

вы слишком мотивированы, я не могу бороться, чтобы залить jsfiddle в это время ночи;) – jcolebrand

2

В разметке вы продемонстрировали, это должно делать то, что вы хотите:

$('.click').click(function() { 
    $('#sample').text($(this).siblings('.get').text()); 
}); 

Обратите внимание, что если есть несколько братьев и сестер с классом get, это может не делать то, что вы хотите. Он вернет первого родного брата с этим классом, а не «ближайшего» в разметке - вам нужно придумать более строгое определение «ближайшего», если будет несколько братьев и сестер .get.

Кроме того,

$(this).each(function(){ ... }); 

бессмысленное утверждение. Это означает «выполнить эту функцию один раз для каждого элемента в наборе согласованных элементов», но есть только один элемент в наборе согласованных элементов, а именно $(this). Вы можете заменить его только содержимым анонимной функции.

Функция .closest() возвращает первый элемент, соответствующий конкретному селектору. Так что не имеет смысла звонить $(document).closet() - document не имеет родителей.

+0

zerkms дал этот код за час до вас –

+0

@Dan - Не уверен где вы получили эту идею, - сказал zerkms, когда я печатал ее, примерно за 2 минуты до меня. Спасибо за понижение, хотя. –

+0

Он сказал: «Ответил 2 часа назад» на его и «ответил 1 час назад» на вашем –

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