首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在动态创建的元素上实现jQuery

在动态创建的元素上实现jQuery
EN

Stack Overflow用户
提问于 2014-09-01 22:55:00
回答 3查看 87关注 0票数 0

我试图将两个jQuery脚本集成到一个脚本中,但是由于第一部分的元素是使用jQuery动态创建的,所以项目的第二部分无法工作。

项目:

1.Instagram图片被解析为li元素中的JSON。

下面是代码的一部分:

代码语言:javascript
复制
<ul id="elasticstack" class="elasticstack">
</ul>

<script>
$("#elasticstack").append("<li><div class='peri-pic'><img class='instagram-image' src='" + data.data[i].images.low_resolution.url +"' /><span class='name'>"+ data.data[i].caption.from.username +"</span> <span class='likes'><span class='glyphicon glyphicon-heart'></span><p>"+data.data[i].likes.count +"</p></span></div></li>"
    );  
</script>

来源:链接

2.这很好,但是当我尝试添加滑块时,所有函数都不起作用。即使我将标注函数封装在$( document ).ready(function() { });

下面是呼叫代码:

代码语言:javascript
复制
<script>
    new ElastiStack( document.getElementById( 'elasticstack' ) );
</script>

来源:链接

下面是包含我所有代码的JS:链接

我哪里出问题了?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-09-01 23:16:07

你在找这个。在最初的loadImages(start_url)调用之后,您应该能够调用loadImages(next_url)来加载和显示更多内容。new ElastiStack必须在图像被追加后调用。

代码语言:javascript
复制
var access_token = "18360510.5b9e1e6.de870cc4d5344ffeaae178542029e98b",
    user_id = "18360510", //userid
    start_url = "https://api.instagram.com/v1/users/"+user_id+"/media/recent/?access_token="+access_token,
    next_url;

function loadImages(url){
    $.ajax({
        type: "GET",
        dataType: "jsonp",
        cache: false,
        url: url,
        success: function(data){
            displayImages(data);
            next_url = data.pagination.next_url;
        }
    })
}

function displayImages(images){
    for(var i = 0; i < 20; i++){
        if(images.data[i]){
            $("#elasticstack").append("<li><img class='instagram-image' src='" + images.data[i].images.low_resolution.url + "'></li>");
        }
    }

    // Call it after the images have been appended
    new ElastiStack(document.getElementById('elasticstack'));
}

$(document).ready(function(){
    loadImages(start_url);
});
票数 1
EN

Stack Overflow用户

发布于 2014-09-01 23:15:50

例如,在将数据( ElastiStack元素)附加到DOM中的ajax之后,尝试初始化ajax

代码语言:javascript
复制
for (var i = 0; i < count; i++) {
   // ...
    $("#elasticstack").append(...);
}

new ElastiStack(...);

应该管用的。

票数 1
EN

Stack Overflow用户

发布于 2014-09-01 23:23:32

代码语言:javascript
复制
        $.ajax({
            type: "GET",
            dataType: "jsonp",
            cache: false,
            url: url ,
            success: function(data) {

            next_url = data.pagination.next_url;
            //count = data.data.length;
            //three rows of four
            count = 20; 

            //uncommment to see da codez
            //console.log("count: " + count );
            //console.log("next_url: " + next_url );
            //console.log("data: " + JSON.stringify(data) );

            for (var i = 0; i < count; i++) {
                    if (typeof data.data[i] !== 'undefined' ) {
                    //console.log("id: " + data.data[i].id);
                        $("#elasticstack").append("<li><img class='instagram-image' src='" + data.data[i].images.low_resolution.url +"' /></li>"
                    );  
                    }  
            }     
            new ElastiStack(document.getElementById('elasticstack'));
        }
    });

您必须在ajax成功事件中移动您的new ElastiStack(document.getElementById('elasticstack'));。你不需要改变你的任何东西。我还更新了你的JSFiddle。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25613746

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档