Генерация списка из DIV'ов
Приветствую всех.
Решил обратиться на форум, ибо уже второй день не могу сообразить, как мне реализовать свои задумки. В данный момент времени изучать js и jquery нету, по этому прошу помочь мне. Описание мыслей: Есть пример работы одного js скрипта основанного на drag&drop системе. Сам скрипт можно глянуть тут: _http://www.dhtmlgoodies.com/scripts/drag-drop-custom/demo-drag-drop-3.html В ходе работы со страничкой, пользователь перетаскивает блоки(обычные DIV'ы с персональными идентификаторами) с названиями столиц в блоки(опять же DIV'ы, каждый со своим идентификатором) с названиями государств. Пример скрипта заключается в сравнении, правильно ли пользователь выбрал столицу государства, меня же этот пункт не интересует, его я вырежу без проблем. Как я понимаю, после перетаскивания в следующие блоки с названием государств: <div id="countries"> <div id="kingdom_1" class="dragableBoxRight">Italy<div class="dragableBox" id="box1">Oslo</div></div> <div id="kingdom_2" class="dragableBoxRight">Spain</div> <div id="kingdom_3" class="dragableBoxRight">Norway</div> <div id="kingdom_4" class="dragableBoxRight">Denmark</div> <div id="kingdom_5" class="dragableBoxRight">South Korea</div> <div id="kingdom_6" class="dragableBoxRight">Sweden</div> <div id="kingdom_7" class="dragableBoxRight">United States</div> </div> Самих блоков с названиями столиц: <div id="dropContent"> <div class="dragableBox" id="box1">Oslo</div> <div class="dragableBox" id="box2">Stockholm</div> <div class="dragableBox" id="box3">Washington</div> <div class="dragableBox" id="box4">Copenhagen</div> <div class="dragableBox" id="box5">Seoul</div> <div class="dragableBox" id="box6">Rome</div> <div class="dragableBox" id="box7">Madrid</div> </div> Код грубо говоря выглядит примерно так: <div id="countries"> <div id="box106" class="dragableBoxRight">Italy <div class="dragableBox" id="box1">Oslo</div> </div> <div id="box107" class="dragableBoxRight">Spain <div class="dragableBox" id="box2">Stockholm</div> </div> <div id="box101" class="dragableBoxRight">Norway <div class="dragableBox" id="box3">Washington</div> </div> <div id="box104" class="dragableBoxRight">Denmark <div class="dragableBox" id="box4">Copenhagen</div> </div> <div id="box105" class="dragableBoxRight">South Korea <div class="dragableBox" id="box5">Seoul</div> </div> <div id="box102" class="dragableBoxRight">Sweden <div class="dragableBox" id="box6">Rome</div> </div> <div id="box103" class="dragableBoxRight">United States <div class="dragableBox" id="box7">Madrid</div> </div> </div> ________ Теперь же мне нужно отправить в свой php обработчик строку с данными, с которой я смогу работать. На вид строки мне наплевать, с ней я смогу извратиться, как угодно. Суть лишь в том, что мне нужно исходя из предыдущего примера, получить, что-то, такое: box106=box1&box107=box2&box101=box3&box104=box4&box105=box5&box102=box6&box103=box7 То есть я должен получить информацию, о том, какому государству, какую столицу присвоил пользователь. Далее на кнопку вешаю обработчик, на подобие: var order = "box106=box1&box107=box2&box101=box3&box104=box4&box105=box5&box102=box6&box103=box7"; $.post("updateIn.php", order, function(theResponse){ $("#contentRight").html(theResponse); // Вставка ответа с сервера в div c id="contentRight" }); Мой php скрипт обработает эту строку, разобьёт все параметры, затолкает их в базу, извратится с ними, обмажет соусом, да пофигу, что ещё. Вся соль в том, что мои знания js на безумно низком уровне, и я не понимаю, как можно перебрать id div'ов в другом div'е Нужно сделать обработку всех div'ов в div'e #countries, после беглых взглядом по jquery, напрашивается, что-то, типа: !(Я не знаю js, написанное ниже скорее всего, полный бред) $(#countries).find("DIV").id или function Trololo() { var difx = document.getElementsById('countries'); var objects = difx.getElementsByTagName('div'); for(var i=0;i<objects.length;i++){ //тут, какая-то обработка } } _____ Надеюсь, смог собраться кашу образовавшуюся в голове в более-менее восприимчивую форму. Если возникнут вопросы или непонимания, отписывайтесь, отвечу по возможности быстро. В итоге нужно сделать скрипт на js, jquery, который будет формировать мне строку вида: box106=box1&box107=box2&box101=box3&box104=box4&box105=box5&box102=box6&box103=box7 |
Если JQuery то:
var str = []; $('#countries div.dragableBoxRight').each(function() { str.push($(this).attr('id')+'='+$('div.dragableBox', this).attr('id')); }); str = str.join('&'); |
К сожалению полностью не понимаю принципа работы функции, но своего добился. Полезу в учебник, что бы разобраться во всём.
Кстати, очень удобно, что можно указать свой разделитель, это очень поможет при формировании строки. str = str.join('&'); В общем, большое спасибо за помощь, надо было не мучить себя, а сразу отписать на форуме. Напоследок вопрос, для тех, кто ещё заглянет в тему: Бытует мнение, что лучше начинать изучение с jquery, так вот, правда ли это? Или лучше начинать с обычного js, а уже после его освоения, переходить на на jquery? |
walik, ну зачем?
$(this).attr('id') если можно просто this.id ... вопрос адресован не только тебе, а ко многочисленным девелоперам, которые так же пишут хочу узнать, нафига. |
walik,
зачем each, когда есть map var str = $('#countries>div.dragableBoxRight').map(function() { var div = this.getElementsByTagName("div"); if ( 0 in div ) { return encodeURIComponent(this.id) + '=' + encodeURIComponent(div[0].id); } }).get().join('&').replace(/%20/g, "+"); |
Спасибо за различные решения, скрипт почти закончил, теперь всё отлично работает.
И я так понял, меняя "$(this).attr('id')" на "this.id" мы выполняем то же действие, просто по средствам стандартного js без использования jquery ? |
Цитата:
+Привычка работать с атрибутами юзая get/setAttribute Цитата:
Цитата:
|
А вот я не очень понял, как работает скрипт в примере. Кто отвечает за анимацию Drag&Drop? DHTML? А что это за технология, как её использовать?) Я при беглом просмотре увидел лишь обычный HTML, обычный CSS и вполне понятный JS код, создающий правда некий специальный объект. А как работает замечательное движение блоков, я так и не понял...
Объясните чайнику) |
все реализуется в jquery ui
|
popov654, гляньте в загружаемый скрипт, там всё закоментировано и более-менее разобраны основные функции.
http://www.dhtmlgoodies.com/scripts/...drop-custom.js |
Часовой пояс GMT +3, время: 02:35. |