antonKar Posted June 16, 2015 Report Share Posted June 16, 2015 Допустим есть строка видаvar html = "<div class='gallery-item _active' data-id='5'><img src='/upload/temp/blablabla.jpg' alt='' /></div>";Есть ли в JS что-то для упрощения строки, приведённой выше? То есть написать что-то типаvar html = "div.gallery-item._active[data-id='5']>img[src='/upload/temp/blablabla.jpg']";А затем уже при вставке HTML делать что-то типа$gallery.html(html.emmet()); Quote Link to comment Share on other sites More sharing options...
0 afdw Posted June 16, 2015 Report Share Posted June 16, 2015 Есть HTML препроцессоры на JS. Надо выбрать, какой нравится, и привязать. 1 Quote Link to comment Share on other sites More sharing options...
0 antonKar Posted June 16, 2015 Author Report Share Posted June 16, 2015 Есть HTML препроцессоры на JS Спасибо, с первого захода нашёл вот это http://absurdjs.com/pages/html-preprocessing/, посмотрю вечерком Quote Link to comment Share on other sites More sharing options...
0 nerv Posted June 16, 2015 Report Share Posted June 16, 2015 Есть ли в JS что-то для упрощения строки, приведённой выше? Нескромный вопрос: а зачем ты в код разметку лепишь? Quote Link to comment Share on other sites More sharing options...
0 Yazon_Nile Posted June 16, 2015 Report Share Posted June 16, 2015 Чтобы потом вынести в шаблоны?) 1 Quote Link to comment Share on other sites More sharing options...
0 antonKar Posted June 16, 2015 Author Report Share Posted June 16, 2015 зачем ты в код разметку лепишь? Ок, какие есть методики для вставки в DOM вёрстки, которой изначально нет? Например (синтетический пример) мы добавили через input[type=file] 50 файлов и надо вставить в форму 50 input[type=hidden] с value, значение которого равно имени файла. Как это сделать правильно? Quote Link to comment Share on other sites More sharing options...
0 afdw Posted June 16, 2015 Report Share Posted June 16, 2015 (edited) Как это сделать правильно?Примерно так:[].forEach.bind(document.querySelectorAll("input[type='file']", function($file){ var $hidden = document.createElement("input"); $hidden.type = "hidden"; $file.parentNode.insertBefore(childGuest, $hidden.nextSibling);}); Edited June 16, 2015 by afdw Quote Link to comment Share on other sites More sharing options...
0 antonKar Posted June 16, 2015 Author Report Share Posted June 16, 2015 (edited) document.createElement Через цикл дёргать 50 раз DOM? Как-то не очень красиво и эффективно. Гораздо проще и менее затратно будет через цикл сформировать html-структуру в виде строки и затем уже 1 раз дёрнуть DOM для вставки. Edited June 16, 2015 by antonKar Quote Link to comment Share on other sites More sharing options...
0 nerv Posted June 16, 2015 Report Share Posted June 16, 2015 Ок, какие есть методики для вставки в DOM вёрстки, которой изначально нет? MV** паттерны Например (синтетический пример) мы добавили через input[type=file] 50 файлов и надо вставить в форму 50 input[type=hidden] с value, значение которого равно имени файла. Как это сделать правильно? твой и множество других синтетических примеров загрузки файлов (к сожалению, не все) я реализовал в виде модуля для ангуляра но, именно тебе посоветую Vue.js (потому, что она проще, удобней, быстрей) Quote Link to comment Share on other sites More sharing options...
0 afdw Posted June 16, 2015 Report Share Posted June 16, 2015 Зачем так всё усложнять для простейшей задачи? document.createElement Через цикл дёргать 50 раз DOM? Как-то не очень красиво и эффективно. Гораздо проще и менее затратно будет через цикл сформировать html-структуру в виде строки и затем уже 1 раз дёрнуть DOM для вставки. http://javascript.ru/optimize/documentfragment-0 Quote Link to comment Share on other sites More sharing options...
0 antonKar Posted June 16, 2015 Author Report Share Posted June 16, 2015 я реализовал в виде модуля для ангуляра А если у нас Smarty в качестве серверного шаблонизатора? Vue.js можно настроить на тот момент, что у нас уже есть шаблонизатор, который будет конфликтовать? А то выглядит ИМХО как из пушки по воробьям. Quote Link to comment Share on other sites More sharing options...
0 nerv Posted June 18, 2015 Report Share Posted June 18, 2015 Vue.js можно настроить на тот момент, что у нас уже есть шаблонизатор, который будет конфликтовать?на основании чего ты сделал вывод "будет конфликтовать"? Умозаключение из серии "хорошая погода. Курс доллара должен вырасти" А если у нас Smarty в качестве серверного шаблонизатора? не поверишь, у нас тоже смарти ничего не буду объяснять. Нет времени. Не интересно. Лениво. Quote Link to comment Share on other sites More sharing options...
0 antonKar Posted June 18, 2015 Author Report Share Posted June 18, 2015 на основании чего ты сделал вывод "будет конфликтовать"? Да {{действительно}}, {с чего бы это}. Quote Link to comment Share on other sites More sharing options...
0 nerv Posted June 18, 2015 Report Share Posted June 18, 2015 Да {{действительно}}, {с чего бы это}.<style> .в-самом-деле { /* code */ }</style>А жуквери со смарти не конфликтует? Quote Link to comment Share on other sites More sharing options...
0 antonKar Posted June 18, 2015 Author Report Share Posted June 18, 2015 Ну, голубчик, каждый раз {content} оборачивать в literal ИМХО не очень корректно. Quote Link to comment Share on other sites More sharing options...
0 nerv Posted June 18, 2015 Report Share Posted June 18, 2015 Ну, голубчик, каждый раз {content} оборачивать в literal ИМХО не очень корректно вероятно, поэтому есть минимум три способа избежать этого Quote Link to comment Share on other sites More sharing options...
0 antonKar Posted June 18, 2015 Author Report Share Posted June 18, 2015 Хорошо, а какие? Или хотя бы как мне запрос в гугл составить? Quote Link to comment Share on other sites More sharing options...
0 Николя223 Posted June 18, 2015 Report Share Posted June 18, 2015 http://nbubna.github.io/HTML/https://github.com/zodoz/jquery-ZenCoding 1 Quote Link to comment Share on other sites More sharing options...
0 nerv Posted June 19, 2015 Report Share Posted June 19, 2015 Хорошо, а какие? 1. изменить в конфиге smatry символы разделители2. изменить в конфиге vue.js символы разделители3. использовать {ldelim}{rdelim} в smatry4. не использовать '{' & '}' при описании шаблона (да, это возможно)5. ... 1 Quote Link to comment Share on other sites More sharing options...
0 antonKar Posted June 23, 2015 Author Report Share Posted June 23, 2015 2. изменить в конфиге vue.js символы разделители Спасибо, что всё-таки потрудились объяснить, хоть, как вы ранее сказали, было это и сложно. Quote Link to comment Share on other sites More sharing options...
0 nerv Posted June 23, 2015 Report Share Posted June 23, 2015 Спасибо, что всё-таки потрудились объяснить, хоть, как вы ранее сказали, было это и сложно под сложным я подразумевал другое) Quote Link to comment Share on other sites More sharing options...
Question
antonKar
Допустим есть строка вида
Есть ли в JS что-то для упрощения строки, приведённой выше? То есть написать что-то типа
А затем уже при вставке HTML делать что-то типа
Link to comment
Share on other sites
20 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.