Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Обращение к элементу (https://javascript.ru/forum/jquery/40965-obrashhenie-k-ehlementu.html)

DeD_Mazai 26.08.2013 14:40

Обращение к элементу
 
Допустим, есть документ с таким содержимым:
Код:

...<br>sometext<div></div><br>sometext<br>...
И скрипт:
function blablabla(){
$('div').append(document.createElement('br'));
$('div > br').unwrap();
}


После срабатывания скрипта div удаляется и на его место становится свежесозданный br и дерево элементов "перезагружается". Вопрос: могу ли я каким либо образом еще раз обратится к этому же br'у? По индексу искать неполучится т.к. кол-во всех br'ов неизвестно. Может его можно как нибудь "запомнить" или "пометить"?
У моего генератора идей уже села батарейка:( . Надеюсь на вашу помощь.

devote 26.08.2013 14:55

var br = document.createElement('br');
br.id = 'myBR';
$('div').append(br);


br - ссылка на вставленный бр, а можно найти его и по ID - myBR

ksa 26.08.2013 15:06

Цитата:

Сообщение от DeD_Mazai
По индексу искать неполучится

Да брось! :D
Ты его добавляешь в конец - значит он последний, вот тебе и индекс.

Цитата:

Сообщение от DeD_Mazai
Может его можно как нибудь "запомнить"

Можно и запомнить...

// вот запомнил
var o=document.createElement('br');
$('div').append(o);


Цитата:

Сообщение от DeD_Mazai
или "пометить"?

Как "пометить" уже показал devote...

DeD_Mazai 26.08.2013 15:11

devote,
Поиск по id неподходит, а вот идея с переменной мне понравилась, но возникает встречная проблема:
var div = $('div');
var br = $('br', div)[0];
alert(br.length);


Возвращает undefined. почему? у меня синтаксическая ошибка?

ksa 26.08.2013 15:15

Цитата:

Сообщение от DeD_Mazai
Возвращает undefined. почему?

А почему оно должно быть каким-то другим? :D

JS действует по своим законам, а не по наитию каких-то кодеров...
Ты сам-то хоть понял чего накодил? :D

DeD_Mazai 26.08.2013 15:21

Всё, всем спасибо, разобрался. Сейчас будем применять на практике!

DeD_Mazai 26.08.2013 15:45

А на практике не всё так гладко... В общем не буду ходить вокруг да около, вот изначальный скрипт с которым я работаю:
var sel = iframe_doc.getSelection();
var br = sel.getRangeAt(0).createContextualFragment('<br>');
sel.getRangeAt(0).insertNode(br);
$('br', sel.anchorNode).unwrap();
br.id = "myid";


br.length показывает что имеется 1 такой элемент в наборе, но вот в дереве он его не находит, и br.id = "myid"; не отрабатывает.Может есть вариант, как ему присвоить id?

Алек 26.08.2013 16:12

Вытащить последний элемент можно с помощью метода .length - 1, вот например:
var array = ["Перевый элемент","Второй элемент","Третий элемент"];
alert("Последний элемент это " + array[array.length - 1]);

Выводит Последний элемент это Третий элемент

DeD_Mazai 26.08.2013 16:51

Алек,
Вы не поняли, в данном коде браузер мне "говорит" что в переменной массиве br он видит 1 элемент, но обратится я к нему немогу...

DeD_Mazai 28.08.2013 21:40

Путём проб узнал что браузер находит элемент в дереве элементов через переменную т.е.:
var br = document.createElement('br');
$('div').append(br);
br.parentNode   //вернёт div


но в моём случае возвращает null. Может вопрос глупый, но всёже - что в данном случае означает null? нет родителя? не нашёл элемент?


Часовой пояс GMT +3, время: 02:18.