[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Выбрать значения предыдущего div
Renden
Доброго, есть html примерно такого вида:

<p class="new">
<div
class="who">Вася</div>
</p>
<div
class="some">
<a
href="#" class="show">Показать</a>
</div>


<p
class="new">
<div
class="who">Петя</div>
</p>
<div
class="some">
<a
href="#" class="show">Показать</a>
</div>


Нужно показать содержимое пердыдущего дива who при нажатии на кнопку показать.
Пробывал так:

$(function(){
$(".show").click(function(){
alert($(".who", this).prev(".new").text());
});
});

Ну это явно не правильно, мб кто подскажет как?



Спустя 44 минуты, 38 секунд (20.10.2011 - 13:49) killer8080 написал(а):
так?
$(document).ready(function(){
$(".show").click(function(){
alert($(this).parent().prev().html());
return false;
})
});

Спустя 35 минут, 30 секунд (20.10.2011 - 14:25) Renden написал(а):
killer8080
Несовсем, так он выбирает все значения предыдущего дива, а мне надо только текст из <div class="who"> этого дива.

<p class="new">
<div
class="who">Вася</div>
<div
class="Ненужный див">Ненужное значение</div>
<div
class="Ненужный див2">Ненужное значение2</div>
</p>
<div
class="some">
<a
href="#" class="show">Показать</a>
</div>


Спустя 1 час, 54 минуты, 44 секунды (20.10.2011 - 16:19) ApuktaChehov написал(а):
Renden - див с ссылкой "Показать" можно перенести внутрь тега p?

Спустя 16 часов, 21 минута, 21 секунда (21.10.2011 - 08:41) Renden написал(а):
ApuktaChehov
К сожалению нет, это разметка плагина jquery..

Спустя 3 часа, 58 минут, 24 секунды (21.10.2011 - 12:39) ApuktaChehov написал(а):
Так. Я сделал. Но есть одно "НО". По какой причине браузеры не допускают нахождение тега div в теге p. Я проверял span может находиться в p, в div нет, хз почему.

Вот пример, сделано "на коленке", и работает оно со span-ом.
function asd(obj) {
var res_obj = null;
var parent = obj.parentNode.parentNode;
var obj_arr = parent.getElementsByTagName('*');
var cur_obj_index = 0;

//Определяем порядковый номер текущего элемента
for(i = 0; i < obj_arr.length; i++)
if(obj_arr[i] == obj){
cur_obj_index = i;
break;
}

//Ищем предыдуший тег p
for(i = cur_obj_index; i > 0; i--)
if(obj_arr[i].tagName == 'P') {
//Выбираем первый спан
res_obj = obj_arr[i].getElementsByTagName('span')[0].childNodes[0].nodeValue;
break;
}

return res_obj;
}

<p class="new">
<span
class="who">Вася</span>
</p>
<div
class="some">
<a
href="#" class="show" onclick="asd(this);">Показать</a>
</div>
<p
class="new">
<span
class="who">Петя</span>
</p>
<div
class="some">
<a
href="#" class="show" onclick="asd(this);">Показать</a>
</div>


Если верстку поправить нельзя, то это нужно доработать. Как? Честно, сейчас мне в лом думать. Я лучше пойду поработаю маленько. Счастливо!

Спустя 1 час, 17 минут, 2 секунды (21.10.2011 - 13:56) Michael написал(а):
Цитата
Несовсем,

alert($(this).parent().prev().find('div.who').html());

Спустя 1 час, 5 минут, 6 секунд (21.10.2011 - 15:01) killer8080 написал(а):
Цитата (ApuktaChehov @ 21.10.2011 - 12:39)
Так. Я сделал. Но есть одно "НО". По какой причине браузеры не допускают нахождение тега div в теге p.

Наверно потому что в валидном документе таких конструкций быть не должно.

Спустя 2 часа, 17 минут, 17 секунд (21.10.2011 - 17:18) ApuktaChehov написал(а):
killer8080 - так точно Кэп! laugh.gif
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.