Javascript-форум (https://javascript.ru/forum/)
-   jQuery (https://javascript.ru/forum/jquery/)
-   -   Замена тэга, или другой вариант загрузки по клику. (https://javascript.ru/forum/jquery/34389-zamena-tehga-ili-drugojj-variant-zagruzki-po-kliku.html)

Alexander_Light 02.01.2013 20:52

Замена тэга, или другой вариант загрузки по клику.
 
Здравствуйте, вырезая всё лишнее имею сейчас это, jquery - скопировал готовое решение
http://jsfiddle.net/BmFcM/
На странице очень много видео, а каждый такой айфрейм грузит по три скрипта и превьюшку. Сейчас там грузит по сути всё сразу. Нужно, что-бы показывалось только по клику.

Я только начинаю изучать, пхп, не js, но похожи, так что пытался нахимичить. С гугла искал сдесь, пытался подставлять свои классы в click function после toggle normal.
Обозвал все айфреймы - iflame, максимум, что получилось - айфрейм с заготовкой html документа с потерянными данными.
:write:

update: или в этом вообще нет смысла?) Как такое реализовать тогда? :)

Hoshinokoe 02.01.2013 21:50

Alexander_Light,

Ты можешь не назначать сразу src у ифрейма, а только по клику. Нужный урл можно сохранить в аттрибуте data.

Примерно так:
<iframe src="" data-url="http://vk.com/video_ext.php?oid=-49912&id=163329178&hash=3a993b4b936e1bb3&hd=1" width="607" height="360" frameborder="0"></iframe>
$('.bla-bla-bla').click(function() {
    var iframe = $(...); //берем нужный ифрейм
    iframe.attr('src', iframe.data('url')); // выставляем src
});

Соответственно, как только изменился src, то автоматически браузер начнет подгружать содержимое.

Alexander_Light 03.01.2013 08:04

Спасибо!:thanks:
Вставил в ту же функцию по клику, своё дело выполняет
$(document).ready(function(){ 
		$('.content-list-item-head').click(function(){ 
		$(this).parent().children('div.content-list-item-body').toggle('normal');
		var iframe = $('.video-iframe'); //берем нужный ифрейм
		iframe.attr('src', iframe.data('url')); // выставляем src
		return false;
		});
		});


Но! Грузит в src только data-url из первого iframe на странице, как указать на загрузку атрибутов только внутри дочернего iframe? А то сейчас он получается с первого берёт.
И второе, менее важное - очень уж тормозит, когда он пытается загрузить и анимацию раскрытия сделать. Может загрузку отложить на несколько мс.? Да и при сворачивании теперь тормозит, и при повторном разворачивании, когда уже всё вроде загрузилось. Тут наверное дело в том, что опять выполняется подстановка атрибутов, хотя нужно только первый раз.

Hoshinokoe 03.01.2013 11:29

Alexander_Light,

Если разметка как в примере, то нужный ифрейм получить можно так:
var iframe = $(this).parent().find('.video-iframe');

Плюс src необходимо устанавливать только один раз:
if (!iframe.attr('src')) { iframe.attr('src', iframe.data('url')); }

Если нужно, то загрузку запустить после анимации. Полный код:
$(document).ready(function () {
    $('.content-list-item-head').click(function () {
        var iframe = $(this).parent().find('.video-iframe');
        $(this).parent().children('div.content-list-item-body').toggle('normal', function () {
            if (!iframe.attr('src')) { iframe.attr('src', iframe.data('url')); }
        });
        return false;
    });
});

Alexander_Light 03.01.2013 12:49

Hoshinokoe,
Блииин, спасибище большое! Я бы копался ещё очень долго.
Всё работает, спасибо ещё раз)


Часовой пояс GMT +3, время: 22:29.