Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 02.04.2014, 16:27
Аспирант
Отправить личное сообщение для piraids Посмотреть профиль Найти все сообщения от piraids
 
Регистрация: 20.08.2013
Сообщений: 88

обрамить содержимое в тег
Есть код:
<div id="block_1">
<div class="title">title</div>
<input id="val" value="" input />
</div>


Как мне добавить форму, чтобы получилось вот так:
<div id="block_1">
<form>
<div class="title">title</div>
<input id="val" value="" input />
</form>
</div>


Пробую так:
var a = $('div[id^=block_]').html();
$(a).wrap('<form></form>');

Результат ничего

И так:
var a = $('div[id^=add_pay_]').children();
$(a).wrap('<form></form>');

Результат обрамляет в форму каждый дочерний элемент
Ответить с цитированием
  #2 (permalink)  
Старый 02.04.2014, 16:36
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,436

Цитата:
var a = $('div[id^=block_]').html();
$(a).wrap('<form></form>');

Результат ничего
Потому-что метод html() возвращает не объект jQuery, с которым можно манипулировать, а просто строку с содержимым. То есть, у тебя получается
$("<div class='title'>title</div><input id='val' value='' input />").wrap('<form></from>');

jQuery думает, что ты хочешь создать сию цепочку элементов, ну создает ее, оборачивает и все. С тем блоком он ничего не предпринимает.

Цитата:
var a = $('div[id^=add_pay_]').children();
$(a).wrap('<form></form>');

Результат обрамляет в форму каждый дочерний элемент
Метод children же да, возвращает именно объект jQuery, с которым можно манипулировать. То, что в результате обрамлен каждый элемент набора - да, правильно, так и должно быть, таково действие большинства методов jQuery. Если хочешь обрамить сразу все элементы набора, используй вместо метода wrap метод wrapAll.

Последний раз редактировалось Erolast, 02.04.2014 в 16:44.
Ответить с цитированием
  #3 (permalink)  
Старый 02.04.2014, 22:07
Аспирант
Отправить личное сообщение для piraids Посмотреть профиль Найти все сообщения от piraids
 
Регистрация: 20.08.2013
Сообщений: 88

Erolast,
спасибо за описание, пробовал также wrapAll, но почему то не срабатывает
Ответить с цитированием
  #4 (permalink)  
Старый 02.04.2014, 22:12
Аспирант
Отправить личное сообщение для piraids Посмотреть профиль Найти все сообщения от piraids
 
Регистрация: 20.08.2013
Сообщений: 88

верней срабатывает, но как то не правильно
т.к. у меня блоков несколько
<div id="block_1">
<div class="title">title</div>
<input id="val" value="" input />
</div><div id="block_2">
<div class="title">title</div>
<input id="val" value="" input />
</div>

а скрипт имеет такой код:
var a = $('div[id^=block_]').children();
            $(a).wrapAll('<form></form>');

то получается что оно выгребает все, и обрамляет моим тегом, т.е.
<div id="block_1">
<form>
<div class="title">title</div>
<input id="val" value="" input />
<div class="title">title</div>
<input id="val" value="" input />
</div>
</form>
Ответить с цитированием
  #5 (permalink)  
Старый 02.04.2014, 22:35
Аспирант
Отправить личное сообщение для piraids Посмотреть профиль Найти все сообщения от piraids
 
Регистрация: 20.08.2013
Сообщений: 88

решил проблему тем что указал еще один селектор в котором лежат блоки

var a = $('#blocks').find('div[id^=block_]').children();
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Тег обрамить ссылкой maximus AJAX и COMET 5 04.08.2013 19:34
Не отображается содержимое последующих вкладок APdesign Общие вопросы Javascript 4 17.07.2013 08:54
Как выводить на печать содержимое нужного Div-а? sarik Общие вопросы Javascript 9 04.03.2013 12:02
Определение номера тега. awas Internet Explorer 6 18.07.2011 16:54
Удалить тег без удаления содержимого DZHETIGAPA Элементы интерфейса 3 20.05.2011 08:18