argon bulletin board

Експертно търсене  

Новини:

Регистрирането на нови потребители е временно деактивирано.

Автор Тема: JavaScript въпросче как да взема елемента едно ниво нагоре ?  (Прочетена 1805 пъти)

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die

Предполагам все някой знае javaScript
трябва ми как за произволен <a> tag при клик като се извика някоя JavaScript функция да взема/намеря TD-то в което въпросното A се намира.
по идея би трябвало в общия случай да имам нещо такова:
<tr>
...
<td>
<a href="......>
</td>
...
</tr>

т.е. да е едно ниво нагоре.
Активен

Иван Енев

  • Гост

node.getParentNode(); ?
Активен

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die

ама може да не е парент :)
явно трябва да обикалям перентите докато намеря тд :)
Активен

Иван Енев

  • Гост

Виждам, че изникнаха нови изисквания. Конкретизирай какво точно искаш да постигнеш.
Активен

Jack Johnson

  • Неактивен Неактивен
  • Публикации: 704
  • Хора, пазете си здравето! То няма цена!

Навремето реших този проблем по напълно изкуствен начин.

При генерирането на таблицата и <a>-то рънтайм създавамш ID-та от рода на id1, id2, id3 и т.н. Задаваш ги на съответните <td>, които те интересуват и после на onClick в <a>-то задаваш JavaScript функция, на която предаваш ID-то, което вече си генерирал.

Т.е. крайният HTML съдържа цялата информация, която ти е необходима.

Конкретна имплементация на това, за което говоря (и което между другото съм писал аз, докато работех като ASP.NET програмист) можеш да видиш тук: e-florex dot com. В лявата част под картинката с цветенцето има едно грозно дърво с плюсчета и минусчета, виж HTML сорса и ще видиш как работи (на същия принцип).
Активен

Иван Енев

  • Гост

Да, това е често срещан подход за решение, ползвали сме го многократно.
Активен

Boris

  • Неактивен Неактивен
  • Публикации: 45
    • BorisV5

Ако не искаш да индексираш предватително елементите или каквато и да е предварителна потготовка можеш да използваш JQuery много сериозна js библиотека. Ядрото на тази библиотека включва мощен селектор.

Това ще ти свърши работа само ако имаш генеричен случай и не искаш да повтаряш код на много места
http://docs.jquery.com/Main_Page

Нешо подобно, написах го на free style може да трябва малко модификация
$(this).parent("td").click( function () {
  // ... тук е кода за събитието
});
Активен
BorisV5

Иван Йорданов

  • Неактивен Неактивен
  • Публикации: 175

Ето :)

<html>
<head>
<script>
function getParent(obj) {
var pn = obj.parentNode;
while(pn != null) {
if (pn instanceof HTMLTableCellElement) {
return pn;
}
pn = pn.parentNode;
}
//No TD elements found
return null;
}
</script>
</head>
<body>
<table>
<tr>
<td id="td1">
<a href="javascript: void(0)" id="test1" onclick="alert(getParent(this).id)">test1</a>
</td>
<td id="td2">
<span id="fake_tag"><a href="javascript: void(0)"  onclick="alert(getParent(this).id)" id="test2">test2</a></span>
</td>
</tr>
</table>
<a href="javascript: void(0)" id="test3" onclick="alert(getParent(this).id)">test3</a>
</body>
</html>

П.П. Мислех че Пешо ти е пратил това по ICQ вчера :)
Активен
Иван Йорданов
Поздрави от
         The Bash Master Club

JOKe

  • Неактивен Неактивен
  • Публикации: 2656
  • Code or Die

Иване прати го :) спокойно
прсото вече бях пуснал темата тук когато пешо писа
това с JQuery ме накефи иначе :) ся ше го разгледам аз много сам слушал за него ама никога не съм го ползвал
Активен