Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.08.2013, 14:40
Интересующийся
Отправить личное сообщение для DeD_Mazai Посмотреть профиль Найти все сообщения от DeD_Mazai
 
Регистрация: 25.08.2013
Сообщений: 20

Обращение к элементу
Допустим, есть документ с таким содержимым:
Код:
...<br>sometext<div></div><br>sometext<br>...
И скрипт:
function blablabla(){
$('div').append(document.createElement('br'));
$('div > br').unwrap();
}


После срабатывания скрипта div удаляется и на его место становится свежесозданный br и дерево элементов "перезагружается". Вопрос: могу ли я каким либо образом еще раз обратится к этому же br'у? По индексу искать неполучится т.к. кол-во всех br'ов неизвестно. Может его можно как нибудь "запомнить" или "пометить"?
У моего генератора идей уже села батарейка . Надеюсь на вашу помощь.
Ответить с цитированием
  #2 (permalink)  
Старый 26.08.2013, 14:55
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

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


br - ссылка на вставленный бр, а можно найти его и по ID - myBR
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 26.08.2013, 15:06
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

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

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

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


Сообщение от DeD_Mazai
или "пометить"?
Как "пометить" уже показал devote...
Ответить с цитированием
  #4 (permalink)  
Старый 26.08.2013, 15:11
Интересующийся
Отправить личное сообщение для DeD_Mazai Посмотреть профиль Найти все сообщения от DeD_Mazai
 
Регистрация: 25.08.2013
Сообщений: 20

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


Возвращает undefined. почему? у меня синтаксическая ошибка?
Ответить с цитированием
  #5 (permalink)  
Старый 26.08.2013, 15:15
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,228

Сообщение от DeD_Mazai
Возвращает undefined. почему?
А почему оно должно быть каким-то другим?

JS действует по своим законам, а не по наитию каких-то кодеров...
Ты сам-то хоть понял чего накодил?
Ответить с цитированием
  #6 (permalink)  
Старый 26.08.2013, 15:21
Интересующийся
Отправить личное сообщение для DeD_Mazai Посмотреть профиль Найти все сообщения от DeD_Mazai
 
Регистрация: 25.08.2013
Сообщений: 20

Всё, всем спасибо, разобрался. Сейчас будем применять на практике!
Ответить с цитированием
  #7 (permalink)  
Старый 26.08.2013, 15:45
Интересующийся
Отправить личное сообщение для DeD_Mazai Посмотреть профиль Найти все сообщения от DeD_Mazai
 
Регистрация: 25.08.2013
Сообщений: 20

А на практике не всё так гладко... В общем не буду ходить вокруг да около, вот изначальный скрипт с которым я работаю:
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?
Ответить с цитированием
  #8 (permalink)  
Старый 26.08.2013, 16:12
Аватар для Алек
Аспирант
Отправить личное сообщение для Алек Посмотреть профиль Найти все сообщения от Алек
 
Регистрация: 14.04.2013
Сообщений: 85

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

Выводит Последний элемент это Третий элемент
Ответить с цитированием
  #9 (permalink)  
Старый 26.08.2013, 16:51
Интересующийся
Отправить личное сообщение для DeD_Mazai Посмотреть профиль Найти все сообщения от DeD_Mazai
 
Регистрация: 25.08.2013
Сообщений: 20

Алек,
Вы не поняли, в данном коде браузер мне "говорит" что в переменной массиве br он видит 1 элемент, но обратится я к нему немогу...
Ответить с цитированием
  #10 (permalink)  
Старый 28.08.2013, 21:40
Интересующийся
Отправить личное сообщение для DeD_Mazai Посмотреть профиль Найти все сообщения от DeD_Mazai
 
Регистрация: 25.08.2013
Сообщений: 20

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


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



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обращение к элементу и изменение его свойств Sveta Общие вопросы Javascript 2 24.07.2013 11:18
Обращение к конкретному элементу не по id seacjs Events/DOM/Window 2 11.06.2013 16:15
Обращение к элементу по классу shtopor Events/DOM/Window 7 08.12.2012 22:58
Обращение к элементу Isaac (X)HTML/CSS 6 11.11.2011 20:18
Обращение к элементу внутри метода .ajax() roma86 jQuery 2 19.03.2010 21:52