jQuery Template на Спиши.ру
Всем привет! Как организован вывод ссылок на решённые номера на этом сайте http://spishy.ru/homework/books/6/9/7255 ?
|
http://habrahabr.ru/blogs/jquery/112843/
или сформулируйте свой вопрос точнее. |
DjDiablo, это не то.
Мне кажется, помоему случае как то подругому реализовано. Я не нашёл в коде шаблона Может кто посмотрит что там? |
Шаблонов там дофига, но помоему они все на социалку.
Книги на стороне сервера генерятся. Т Я понять немогу что ты под решёнными заданиями понимаешь. Синии звёздочки чтоли, дак там два тега , им шаблон не нужен. Сами данные о заданиях хранятся в объекте windowsbook. Очевидно этот обьект генерировался вместе со страницей. То есть никакого ajax ту то нету, все данные выданы вместе со страницей. Сам скрипт ответственный за звёздочки расположен в файле по ссылке http://spishy.ru/js/_all.js?7 вот фрагмент кода. var Homework = (function() { // onDocumentReady $(function() { if (typeof book === "undefined") return; Homework.showTasks(book.tasks); if ($(".homework .tasks").length) { var selected = []; var $task = $(".homework .task"); if ($task.length) { var selected = Homework.getSSelectedTopics(book.topics, $task.data("id")) || []; } Homework.addSelect(book.topics, selected); $(".homework .task").show(); } }); return { addSelect: function(topics, selected) { var $topics = $(".homework .topics"); if (!$topics.length) return; if (typeof selected === "undefined") selected = []; var options = []; $.each(topics, function(id, data) { var $option = $("<option>").attr("value", id).text(data.name); options.push($option); }); if (!options.length) return; var $select = $("<select>").attr("name", "topic[]").data("topics", topics).change(function(e, selected) { selected = selected || []; $(".homework .task").hide(); $(this).nextAll("select").remove(); Homework.removeTasks(); if (selected.length) { var id = selected.shift(); $(this).val(id); } else { var id = $(this).val(); } if (!id) return; var topics = $(this).data("topics"); if (!topics[id]) return; Homework.showTasks(topics[id].tasks); Homework.addSelect(topics[id].topics, selected); }); var $option = $("<option>").attr("value", "").text("Выберите..."); $select.append($option); for (var i in options) { $select.append(options[i]); } $topics.append($select); $select.trigger("change", [selected]); }, showTasks: function(tasks) { var $tasks = $(".homework .tasks"); if (!$tasks.length) return; this.removeTasks(); var task_id = $(".homework .task").data("id"); var url = $tasks.data("url"); var $ul; var i = 0; $.each(tasks, function() { var id = this.id; var name = this.name; if (!$ul) $ul = $("<ul>").addClass("star-blue"); var $a = $("<a>").attr("href", url + id).text(name); var $li = $("<li>"); if (id == task_id) $li.addClass("selected"); $ul.append($li.append($a)); i++; if (i >= 10) { $tasks.append($ul); $ul = null; i = 0; } }); if ($ul) $tasks.append($ul); }, removeTasks: function() { $(".homework .tasks > ul").remove(); }, getSSelectedTopics: function(topics, id) { for (var topic_id in topics) { var length = topics[topic_id].tasks.length; for (var i = 0; i < length; i++) { if (topics[topic_id].tasks[i].id == id) return [topic_id]; } var selected = Homework.getSSelectedTopics(topics[topic_id].topics, id); if (selected) { selected.unshift(topic_id); return selected; } } } } }()); вместо шаблонизатора как видишь используется вот такая вот нехитрая конструкция, внутри цикла бла бла бла //забадяжем ul if (!$ul) $ul = $("<ul>").addClass("star-blue"); // замутим ссылку var $a = $("<a>").attr("href", url + id).text(name); // сморганим li var $li = $("<li>"); if (id == task_id) $li.addClass("selected"); // впендюрим <li> внутрь <ul>, <а> воткнём внутрь <li> $ul.append($li.append($a)); Бла бла бла ..... //Запихиваем это в элемент task что в браузере виден. if ($ul) $tasks.append($ul); //И вот оно счастие. Работает даже без шаблонизатора )))))))) Надеюсь это то что вас интересовало ) |
DjDiablo, спасибо! Это как раз то, что мне нужно.
Теперь вопрос другой. Как сделать чтобы такой код срабатывал у меня на сайте! Предположим, что массив с данными у меня уже есть. Я граб пишу |
Пардон я опять не догоняю, вы пытаетесь понять как парсить, или просто хотите аналогичное отображение у себя на сайте ?
Если парсить, то думаю так: Получите страницу что хотите отпарсить, найдите содержимое объекта window.book в скрипте и получите это содержимое, всё это придётся делать регулярными выражениями. А дальше работайте с извлечённым содержимым как с json. Что дальше с данными делать, в какие таблицы базы данных сохранять, это вы сами решите. Что касается названия книги, то его вы легко извлекёте из html. Если вы хотите аналогичное отображение на своём сайте, то homework который я привёл это готовый блок ответственный за данный функционал. Напишите свою реализацию. Уж как change у select обрабатывать, и в цикле массив выводить мне думаю нет смысла описывать. Вы наверняка и так знаете. :) |
DjDiablo, спасибо, но это не совсем то что мне нужно. Прост скажите как запустить код homework после загрузки страницы. Спасибо.
|
Цитата:
|
Мне нужно чтобы именно этот код Homework заработал у меня
|
СДЕЛАЛ!!!!!!!!!! Оказалось что кроме homework ещё нужна одна вия из _all.js и ещё fackybox, но я так и не понял зачем он там нужен, но без него срипт не робит
|
Часовой пояс GMT +3, время: 23:00. |