javascript родитеский элемент

12
DriverCat
На сайте с 10.04.2008
Offline
116
727

Добрый день!

Есть код вида


<div id="1">
<script type="text/javascript">
alert();
</script>
</div>

В алерте нужно получить id="1", this.parentNode чего-то не работает. Ногами не пинайте, сам на php пишу.

D
На сайте с 29.06.2011
Offline
2
#1

Если страница генерится из php, то не проще ли было сразу в alert вставлять id или в скрипте переменной присваивать id?

D
На сайте с 14.01.2007
Offline
153
#2

яваскрипту всё равно, откуда вы его вызываете.

когда я смотрю в свой хрустальный шар, то вижу что вам нужно это:


<script type="text/javascript">
function alertId(obj)
{
alert(obj.id);
}
</script>
<div id="1" onClick="alertId(this)">
</div>
dma84
На сайте с 21.04.2009
Offline
168
#3


<div id="1">
<script id="script" type="text/javascript">
alert(document.getElementById('script').parentNode.id);
</script>
</div>
D
На сайте с 14.01.2007
Offline
153
#4

dma84, id у script? :)

DriverCat
На сайте с 10.04.2008
Offline
116
#5
Diplodok:
Если страница генерится из php, то не проще ли было сразу в alert вставлять id или в скрипте переменной присваивать id?

уточню задачу:

на странице может быть вставлен одинаковый код в нескоьких местах:


<script type="text/javascript">
$(document).ready(function(){
$.ajax({
url: "/tpl/left_hot_aj.php?oper=" + oper,
cache: false,
success: function(html){
}
});
});
</script>

мне нужно в success выводить все это дело в html. если бы блок был один я бы просто написал $('1').html(html), но так как блоков может быть несколько, я не могу вывести в определенный тег взяв его по id, мне нужно вывести в предидущий элемент или в родительский или в следующий но никак не получается...

DriverCat добавил 29.06.2011 в 13:13

dma84:

<div id="1">
<script id="script" type="text/javascript">
alert(document.getElementById('script').parentNode.id);
</script>
</div>

выше я уточнил код, поэтому с id не пойдет. не пойму почему не работает $(this).parent() или $(this).next()?

D
На сайте с 14.01.2007
Offline
153
#6
DriverCat:
на странице может быть вставлен одинаковый код в нескоьких местах:
Код:

<script type="text/javascript">
$(document).ready(function(){
$.ajax({
url: "/tpl/left_hot_aj.php?oper=" + oper,
cache: false,
success: function(html){
}
});
});
</script>

не может. ready - событие. и вы каждый раз переписываете ему значение. т.е. выполнится только последнее

DriverCat:
не пойму почему не работает $(this).parent() или $(this).next()?

потому что читайте моё первое сообщение

ДП
На сайте с 23.11.2009
Offline
203
#7
DriverCat:


выше я уточнил код, поэтому с id не пойдет. не пойму почему не работает $(this).parent() или $(this).next()?

А вы попробуйте выведите alert(this) в такой функции - у вас там скорее всего document окажется. Это глобальный контекст, в некоторых случаях jQuery меняет его на обрабатываемый элемент, но это не стандартное поведение js.

Dinozavr:
не может. ready - событие. и вы каждый раз переписываете ему значение. т.е. выполнится только последнее

потому что читайте моё первое сообщение

Выполнятся все, это назначение обработчика события, которых может быть несколько. Если только в обработчике насильно не отключать выполнение остальных.

[Удален]
#8
Dinozavr:
яваскрипту всё равно, откуда вы его вызываете.

вообще-то с точностью наоборот, результат функции как раз зависит откуда и как вы его вызываете :)

P.S. можно вообще обойтись без отношений родитель-потомок, например

в коде при возникновении события в элементе <p></p>

отследить всплывание события по dom

<div id="1">
<p></p>
</div>
DriverCat
На сайте с 10.04.2008
Offline
116
#9
Dinozavr:
не может. ready - событие. и вы каждый раз переписываете ему значение. т.е. выполнится только последнее

потому что читайте моё первое сообщение

.ready убрал, но ваш вариант не подходит потому что мне не нужен onclick и я не могу взять объект по id.

ДП
На сайте с 23.11.2009
Offline
203
#10

Может ситуация правда такая сложная, я бы так сделал:

1. Проставил блокам, куда должна подгружаться инфа одинаковый класс.

2. При загрузке нашел бы все эти блоки, вытащил у них айдишники и запросил контент по айдишнику с сервера.

3. Вставил бы контент в нужный блок.

12

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий