У меня есть ajax, который получает какой либо документ,
после чего я этот документ преобразую в объект jQuery, удаляю/добавляю туда поля и хочу передать куда то дальше с помощью ajax,
но проблема в том, что теряется форматирование.
Вот пример http://test точка amelok.myjino точка ru/ (вывод в консоли)
.text() и .html() пробовал, но не помогает.
jQuery
jQuery получаю html, преобразую его в объект, как преобразовать обратно?
Посмотрите, почему теряется форматирование. Видимо, отдельные селекторы не переносятся в новый документ. Это можно исправить той же библиотекой присвоением нужных селекторов.
Тут и без рюмки ясно что получается говнокод.
Во-первых: кто Вас учил переопределять переменные разными значениями, зачем Вам делать присваивание jQuery элемента туда, где был текст и почему не хранить его (текст) в отдельной переменной и с ней работать?
Во-вторых: вы засунули изначально контент HTML в jQuery обёртку, назначение которой расширить элемент дополнительными свойствами, какой смысл затем их обрезать, когда можно изначально работать с поступившим HTML текстом, а не обёрткой вокруг него.
В-третьих: назначение у jQuery - работа с DOM документа, а не парсинг HTML разметки, т. е. когда Вам нужно парсить данные или засунуть их. Т. е. при получении HTML строки с сервера, есть смысл просто аппендить её на нужный элемент, а не сразу пихать его в jQuery, т. е. порядок таков, получили текст, прикрепили к элементу и уже с ним работать, по его ID.
В-четвертых: переменные присваивать внутри console.log можно, но НЕ нужно. console существует не на всех платформах и Ваш код работать не должен, Вы пишите костыль в механизме, который на это не рассчитан.
В-пятых: скрипты работы с DOM нужно помещать перед закрывающим тегом body, а не в хедере, на момент исполнения скрипта Ваш DOM еще не готов
В-шестых, прикрепите контент HTML не к jQuery обёртке, а прямо в DOM $("#test").html(html); оттуда его можно будет считать, jQuery не знает о содержимом вашего элемента, так как см. п2, jQuery сделан не для парсинга строк, а для работы с DOM. Мало того что задач, ради которых была создана эта библиотека почти не осталось, так Вы еще и делаете ею то, что она делать НЕ должна.
Во-первых: кто Вас учил переопределять переменные разными значениями, зачем Вам делать присваивание jQuery элемента туда, где был текст и почему не хранить его (текст) в отдельной переменной и с ней работать?
Во-вторых: вы засунули изначально контент HTML в jQuery обёртку, назначение которой расширить элемент дополнительными свойствами, какой смысл затем их обрезать, когда можно изначально работать с поступившим HTML текстом, а не обёрткой вокруг него.
В-третьих: назначение у jQuery - работа с DOM документа, а не парсинг HTML разметки, т. е. когда Вам нужно парсить данные или засунуть их. Т. е. при получении HTML строки с сервера, есть смысл просто аппендить её на нужный элемент, а не сразу пихать его в jQuery, т. е. порядок таков, получили текст, прикрепили к элементу и уже с ним работать, по его ID.
В-четвертых: переменные присваивать внутри console.log можно, но НЕ нужно. console существует не на всех платформах и Ваш код работать не должен, Вы пишите костыль в механизме, который на это не рассчитан.
В-пятых: скрипты работы с DOM нужно помещать перед закрывающим тегом body, а не в хедере, на момент исполнения скрипта Ваш DOM еще не готов
В-шестых, прикрепите контент HTML не к jQuery обёртке, а прямо в DOM $("#test").html(html); оттуда его можно будет считать, jQuery не знает о содержимом вашего элемента, так как см. п2, jQuery сделан не для парсинга строк, а для работы с DOM. Мало того что задач, ради которых была создана эта библиотека почти не осталось, так Вы еще и делаете ею то, что она делать НЕ должна.
Алексей Пильщиков
1. Что бы упростить взаимодействие с переменной, так как текст мне нужен только на выходе, а в процессе работы нужен объект DOM
2. jQuery позволяет много возможностей для работы с DOM, с текстом такую шляпу провернуть будет не возможно.
3. Ага, но есть jquery.parsehtml
4. Это тестовый скрипт, который работает у меня, он должен продемонстировать ошибку, не более. А так, естественно согласен.
5. Я работаю с DOM, который получил из 1.html, что в основном файле прогрузилось или нет меня не интересует, но вообще, ставлю реди и не заморачиваюсь обычно.
6. Смысл в том, что мне нужен на выходе полноценный html, а не то что в body. В принципе я уже понял, что обрезается html просто и для верного отображения надо просто его обратно добавить.
html = $("").html(html);
2. jQuery позволяет много возможностей для работы с DOM, с текстом такую шляпу провернуть будет не возможно.
3. Ага, но есть jquery.parsehtml
4. Это тестовый скрипт, который работает у меня, он должен продемонстировать ошибку, не более. А так, естественно согласен.
5. Я работаю с DOM, который получил из 1.html, что в основном файле прогрузилось или нет меня не интересует, но вообще, ставлю реди и не заморачиваюсь обычно.
6. Смысл в том, что мне нужен на выходе полноценный html, а не то что в body. В принципе я уже понял, что обрезается html просто и для верного отображения надо просто его обратно добавить.
html = $("").html(html);
Алексей Пильщиков
п. с. Спасибо за Ваш комментарий, он был достаточно интересен и полезен.
п. с. Я не отрицаю, что я говнокодер. :)
п. с. Я не отрицаю, что я говнокодер. :)
Похожие вопросы
- Как заставить скрипт jQuery видеть изменения на странице html?
- Почему раньше JQuery всем нравился, а теперь все от него уходят? Что произошло-то? Чем плох JQuery?
- Помогите правильно оформить jQuery.
- Плавная прокрутка к элементу страницы на jquery
- Не лучше в место темы jQuery сделать тему C/C++/C# ???
- Почему Jquery добавляет класс, а удалять не хочет этим же способом
- Стоит ли учить jQuery без JavaScript?
- Странное число после сложения на jquery
- Что учить в начале Jquery или React?
- Ajax. jQuery. Передать все значения табицы БД из PHP в JS и вывести их на экран. PHP 7.3
У меня получилось примерно так:
html = $("").html(html);