Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 01.05.2013, 19:10
Новичок на форуме
Отправить личное сообщение для MaxXxaM Посмотреть профиль Найти все сообщения от MaxXxaM
 
Регистрация: 01.05.2013
Сообщений: 8

Замена DOM элемента другим элементом
Всем привет! Впервые задаю вопрос на данном форуме, строго не судите
Проблема заключается в следующем. Сейчас я занимаюсь стилизацией элементов select, checkbox и др. и для этого мне конечно же потребовалась замена одного DOM элемента формы на другой.
Приведу пример:

<input type="checkbox" name="tmp[]" class="my_chb">


При замене данного элемента, воспользовавшись jQuery .replaceWith() конструкцией:

<div>
   <input type="checkbox" name="tmp[]" class="my_chb">
<div>


Результат замены правильный (HTML), но происходит следующее - один DOM элемент my_chb заменяется другим элементом с тем же именем, происходит перекрытие и при подтверждении формы в массиве POST данных о том что данный checkbox установлен нет. Т.е. он ведет себя как не стандартный checkbox. Каким образом можно удалить из памяти старый элемент и заменить его новым?

Аналогичная проблема происходит с select. Только в данном случае если имя задано как sel[] - массив отправляются 2 элемента - старый и новый. Происходит наращивание, что естественно приводит к неверному результату.

Думаю, что решение не заменять элемент аналогичным, а просто скрывать и после него дописать свою структуру. Минус данного вариант в том, что придется переработать весь код что конечно же очень не хочется.

Если кто-нибудь сможет предложить вариант замены элемента одного элемента другим, буду очень признателен!
Заранее спасибо!
Ответить с цитированием
  #2 (permalink)  
Старый 01.05.2013, 19:27
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

Стандартная схема такая: делаем нативный чекбокс невидимым (причем display:none не прокатит), добавляем элементы для стилизации. При "чекании" элемента просто меняем checked исходного чекбокса. Так что массив элементов (контролов) формы остается неизменным -> нет никаких проблем.
Ответить с цитированием
  #3 (permalink)  
Старый 02.05.2013, 15:51
Новичок на форуме
Отправить личное сообщение для MaxXxaM Посмотреть профиль Найти все сообщения от MaxXxaM
 
Регистрация: 01.05.2013
Сообщений: 8

Сообщение от danik.js Посмотреть сообщение
Стандартная схема такая: делаем нативный чекбокс невидимым (причем display:none не прокатит), добавляем элементы для стилизации. При "чекании" элемента просто меняем checked исходного чекбокса. Так что массив элементов (контролов) формы остается неизменным -> нет никаких проблем.
Спасибо, да я знаю о таком решении, я об этом написал, но остается проблема переработки кода. Искал решение поэлегантнее...
Единственное, не понял почему display:none не прокатывает? Манипуляции над элементом с таким атрибутом не принимаются во внимание?
Ответить с цитированием
  #4 (permalink)  
Старый 02.05.2013, 20:14
Аватар для danik.js
Профессор
Отправить личное сообщение для danik.js Посмотреть профиль Найти все сообщения от danik.js
 
Регистрация: 11.09.2010
Сообщений: 8,804

C display:none элемент не может иметь фокус, поэтому по табу до него не добраться.
Ответить с цитированием
  #5 (permalink)  
Старый 03.05.2013, 12:28
Профессор
Отправить личное сообщение для tenshi Посмотреть профиль Найти все сообщения от tenshi
 
Регистрация: 20.03.2008
Сообщений: 1,183

http://api.jquery.com/wrap/
__________________
.ня
Ответить с цитированием
  #6 (permalink)  
Старый 04.05.2013, 01:24
Аватар для Aetae
Любитель
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 5,542

Есть нормальный replaceChild.
__________________
29375, 35
Ответить с цитированием
Ответ



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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Появление элемента в DOM aktep Элементы интерфейса 15 13.02.2016 13:17
Как определить порядковый номер элемента DOM ? dummer jQuery 7 17.01.2014 16:44
Существует ли скрипт, который рисует стрелки от одного элемента DOM к другому? FINoM Элементы интерфейса 4 15.05.2011 21:23
onClick эвент для всего документа, кроме отдельно взятого элемента DOM el_erizo Events/DOM/Window 5 19.03.2010 15:09
удаление DOM элемента и перезагрузка страницы Andrey2005 Общие вопросы Javascript 3 12.10.2009 23:49