- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
Как удалить плохие SEO-ссылки и очистить ссылочную массу сайта
Применяем отклонение ссылок
Сервис Rookee
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
Всех приветствую!
Идея - сделать "пагинацию" в WP как сейчас стало "популярно" и "вебдванольно" - т.е. "подгружать" очередную порцию записей без перезагрузки, внизу тех, что уже выведены на странице...
Итак, есть, есть цикл, который выводит записи (он помещен в <div> с классом ".to_navigation"), и ниже - кнопка "Показать еще"
Идея заключается в том, чтобы по клику на ссылку "Показать больше" - динамически создать новый <div>, поместив его непосредственно перед этой кнопкой, пока грузится в него следующая "порция" записей - "покрутить" там анимашку "loading...", и затем сделать в него load() следующей страницы (а вернее, той порции ее, где выводятся записи).
Все задуманное реализовать удалось.
Привожу скрипт с камментами:
// отловил клик по "показать больше", использую livequery плагин, т.к. иначе без него, новая кнопка "показать больше" будет "не видна" в DOMе
jQuery('#pagination a').livequery('click', function(event){
// запретил переход по ссылке
event.preventDefault();
// получил в переменную ссылку на следующую страницу
var link = jQuery(this).attr('href');
// это я "сгенерил" уникальный ID для создаваемого блока (ну, такой способ выбрал...)
var now = jQuery.now();
// создаю новый <div> и присваиваю ему уникальный ID
var newdiv = document.createElement('div');
newdiv.id = now;
// помещаю этот новый <div> перед блоком с кнопкой "пагинации"
jQuery('#pagination').before(newdiv);
// пишу в него "анимашку" пока...
jQuery(newdiv).html('<img src="http://site.com/ajax-loader.gif" />');
// прячу, а затем вообще удаляю блок с кнопкой "пагинации"
jQuery('#pagination').fadeOut();
jQuery('#pagination').remove();
// загружаю в новосозданный блок новую "порцию" постов, а в callback функции я "вырезаю" блок с кнопкой "пагинации" и помещаю его после новосозданного блока
jQuery(newdiv).load(link + ' .to_navigation', function() {
var newpag = jQuery('#pagination').detach();
newpag.insertAfter(newdiv);
});
// показываю новый блок с новой "порцией" записей... при этом кнопка "Показать еще" тоже обновлена и находится "под ним"
jQuery(newdiv).fadeIn(500, function(){ });
});
...Все это красиво работает (возможно, вероятна более "красивая" реализация), но проблема у меня вот в чем:
В новых "порциях" записях, помещенных в новый блок, мне нужно "достучаться" до объектов, но они недоступны в DOMе - т.е. обращаться я к ним не могу...
Я рассчитывал, что спасет livequery, но он помог только с "кнопкой"... а те объекты, что загружались функцией load() - в DOM не попадают...
Как быть? Кто может намекнуть-подсказать?
P.S. Извиняюсь, если слишком много букав... :)
Вы уверены что в дом не попадают?
Если Вы их видите - они в доме.
Может они "глухие"
Как вы пытаетесь достучаться до них?
artalex, http://www.unmedia.ru/paginator.html :)
Chukcha, у меня в <head> подгружается скрипт. В нем используются селекторы по css-классам, например: jQuery('.anonce')
Вывод записей в цикле такой:
<div class="anonce">Здесь анонс</div>
Так вот, "подгружаемым" функцией load() блокам <div class="anonce"> события не отлавливаются.
А должны? А с какого "препугу"
После лоад вы должны назначить загруженным блокам события
После лоад вы должны назначить загруженным блокам события
либо до загрузки и плагин livequery это позволяет сделать :)
Ну я рассчитывал, что если я использую livequery, то все элементы, загруженные через load() будут доступны. Но этого не происходит. И я не могу понять, почему... :(
artalex, они доступны, вы не правильно к ним обращаетесь
любая функция может быть пустой, вместо первой очень часто используют события
Проблема была вот в чем: (инфа тут: http://api.jquery.com/load/ )
Если в load() запрашивать часть документа (использовать селектор), как в моем случае:
jQuery(newdiv).load(link + ' .to_navigation', function() {
то скрипты "are stripped out and not executed".
Если просто: jQuery(newdiv).load(link, function() { - то все было бы сразу ОК.
Проблему решил вот такой дополнительной строкой в callback функции load()
jQuery(newdiv).load(link + ' .to_navigation', function() {jQuery.getScript('http://site.com/my_script.js');
и так далее...
});
То есть подгрузил нужный скрипт после выполнения load().
Таким образом, проблема решена, спасибо всем за внимание...
artalex, а зачем вы вообще скрипты подгружаете, у вас задача подгрузить данные, а скрипты уже у вас есть!
я приводил вам ссылки выше на работающие примеры, и там более сложная модель работы с dom и всё прекрасно работает
burunduk, спасибо за ссылочку, - скачал, разбираюсь... - там сложнее несколько