Не нравятся результаты поиска? Попробуйте другой поиск!
DLE FAQ » Все вопросы » Ламерские вопросы » AJAX FULL-STORY + спойлер!?

AJAX FULL-STORY + спойлер!?


     02.02.2015    Все вопросы » Ламерские вопросы    3014

вопрос
Модуль {AJAX FULL-STORY} выводит полную новость в модальном окне. Пытался сделать в спойлере ДЛЕ но не получается. Подскажите в чем проблема!?

$(document).on('click', '.spoiler', function(){
    var $this = $(this),
        $data = $this.data();

    $.ajax({
            url: dle_root + 'engine/ajax/full-story.php',
            type: 'GET',
            dataType: 'html',
            data: {
                newsId: $data.afsId, // Обязательная переменная
                preset: ($data.afsPreset) ? $data.afsPreset : '', // Название файла с настройками (необязательно)
                template: ($data.afsTemplate) ? $data.afsTemplate : '', // Название файла с шаблоном (необязательно)
            },
        })
        .done(function (data) {
            var $html = $(data);

$('#'+ $data.afsId).html($html);

        })
$result = '<div id="'+$data.afsId+'" class="text_spoiler">'+$html+'</div>';
$this.after($result);

        })
        .fail(function () {
            console.log("full-story error");
        });
});


и в новости -

<div class="title_spoiler"><a data-afs-id="{news-id}" href="javascript:ShowOrHide('{news-id}')">Подробнее</a></div>

Ответил: vadims


Спасибо vitnet за ответ!

JS -
$(document).on('click', '[data-afs-id]', function () {
    var $this = $(this),
        $data = $this.data();

    $.ajax({
            url: dle_root + 'engine/ajax/full-story.php',
            type: 'GET',
            dataType: 'html',
            data: {
                newsId: $data.afsId, // Обязательная переменная
                preset: ($data.afsPreset) ? $data.afsPreset : '', // Название файла с настройками (необязательно)
                template: ($data.afsTemplate) ? $data.afsTemplate : '', // Название файла с шаблоном (необязательно)
            },
        })
         .done(function (data) {
            var $html = $(data);
            $('#full_id_'+ $data.afsId).html($html);
        })
        
        .fail(function () {
            console.log("full-story error");
        });
});


В шаблон -
<div class="title_spoiler">
<a data-afs-id="{news-id}" href="javascript:ShowOrHide('full_id_{news-id}')">Подробнее</a>
</div>
<div id="full_id_{news-id}" style="display: none;">0</div>

11 комментариев

scaver
Юзер

scaver - 2 февраля 2015 23:49 -

А как вы это представляете? вам нужно содержимое full-story под спойлером в краткой?

vadims
Гости

vadims - 3 февраля 2015 00:01 -

Да, при нажатие на спойлер, под спойлером отображается full-story.

Смысл - получается спойлер который подгружает информацию только нажав на него. Есть вариант AJAX спойлера на этом сайте, но в варианте от Пафнутого все кушируется + Павел отличный програмист =)

scaver
Юзер

scaver - 3 февраля 2015 00:04 -

ааа) тогда к Паше :-)

vadims
Гости

vadims - 3 февраля 2015 00:09 -

Надеюсь он поможет =)
Уверен что не мне одному такой спойлер пригодится =)

vitnet
PHP-developer

vitnet - 3 февраля 2015 09:39 -

Примерно так:
<div class="title_spoiler"><a data-afs-id="{news-id}" href="javascript:ShowOrHide('{news-id}')">Подробнее</a><div id="full_id_{news-id}"></div></div>

        .done(function (data) {
            var $html = $(data);
            $('#full_id_'+ $data.afsId).html($html);
        })

PS: писал с моб., проверить нет возможности.
PSS: Можно добавить проверку на наличие содержимого спойлера дабы не грузить заново при закрытии/открытии.

vadims
Гости

vadims - 3 февраля 2015 11:58 -

Большое спасибо!
Подгружается, НО, для того чтобы спойлер открылся, в первый раз нужно нажать 2 раза, после открывается и закрывается нажав 1 раз. Так каждый спойлер, в первый раз для того чтобы подгрузил нужно 2 раза нажимать.

Код получается вот такой -

<div class="title_spoiler">
<a data-afs-id="{news-id}" href="javascript:ShowOrHide('full_id_{news-id}')">Подробнее</a>
</div>
<div id="full_id_{news-id}"></div>


и JS -

$(document).on('click', '[data-afs-id]', function () {
    var $this = $(this),
        $data = $this.data();

    $.ajax({
            url: dle_root + 'engine/ajax/full-story.php',
            type: 'GET',
            dataType: 'html',
            data: {
                newsId: $data.afsId, // Обязательная переменная
                preset: ($data.afsPreset) ? $data.afsPreset : '', // Название файла с настройками (необязательно)
                template: ($data.afsTemplate) ? $data.afsTemplate : '', // Название файла с шаблоном (необязательно)
            },
        })
         .done(function (data) {
            var $html = $(data);
            $('#full_id_'+ $data.afsId).html($html);
        })
        
        .fail(function () {
            console.log("full-story error");
        });
});

vadims
Гости

vadims - 3 февраля 2015 12:24 -

Все супер!
Спасибо большое!

Вот так 1 нажатием открывает и подгружает -
<div class="title_spoiler">
<a data-afs-id="{news-id}" href="javascript:ShowOrHide('full_id_{news-id}')">Подробнее</a>
</div>
<div id="full_id_{news-id}" style="display: none;">0</div>


или jQuery слайдером
<a data-afs-id="{$el.id}" onclick="$('#full_id_{$el.id}').slideToggle('slow');" href="javascript://">Подробнее</a>
<div id="full_id_{$el.id}" style="display: none;">0</div>


Без текста (указал 0) подгружает но с рывком открывается спойлер jQuery, а в DLE без текста 2 раза нужно нажимать. Но разницы нету - есть текст или нет, все ровно он не отображается, а значит все отлично!

СПАСИБО ЕЩЕ РАЗ!

FastFud
Юзер

FastFud - 3 февраля 2015 12:22 -

<div id="full_id_{news-id}" style="display: none;"></div>

scaver
Юзер

scaver - 3 февраля 2015 13:14 -

Ну тогда вернемся к AJAX FULL-STORY
Помогите доделать Magnific Popup =)

Kota
Юзер

Kota - 15 декабря 2015 21:45 -


ПафНутиЙ
Админ

ПафНутиЙ - 15 декабря 2015 21:52 -

это к чему?

Каков вопрос - таков и ответ. Просто помните об этом.

Чтобы комментировать - войдите или зарегистрируйтесь на сайте

Похожие вопросы

наверх