【问题标题】:How to dynamically reveal JSON data on click from an API?如何从 API 点击动态显示 JSON 数据?
【发布时间】:2018-08-28 01:58:29
【问题描述】:

我已经成功解析了来自 Tumblr API 的数据,直到我在正文描述中引入了tags。 (这包括图片、超链接等)

我实际上在做的是创建一个博客标题列表。根据单击的标题动态显示博客描述。我觉得这段代码由于引用问题而中断,但我不确定如何解决这个问题。

HERE IS A CODEPEN 用完整代码演示问题。

这只是部分查看错误:

      //...
      $.each(inner, function(i, obj) {

          title = inner[i].Title
          description = inner[i].Description

     // Source of the error
     // data-description includes an <a> tag that breaks the code
          $('<div class = "title-list" data-title = "<h3>' + title + '</h3>" data-description="' + description  + '">' + title + '</div>').appendTo(monthblogList)

        })
      })
    });

    function showBlogEntry(element){
      var t = $(element).data('title')
      var ds = $(element).data('description')

      blogEntry.empty()

      $(t).appendTo(blogEntry)
      $(ds).appendTo(blogEntry)
    }
}

再次,我建议您查看CODEPEN 以获得更好的理解。我在第一篇博文中包含了a 标签,以显示该问题。 Here 是原博文。

这是我想到的一种解决方案:

if ($(description).has("a")) {
  // do something
}

但仍不确定如何解决此问题。

我需要从titledescription 变量中获取信息,并根据用户点击的标题在点击时显示其数据。这是一种解决方案,尽管它可能不是最好的。如果除了data 标签之外还有其他解决方案,那将不胜感激。提前致谢。

【问题讨论】:

    标签: jquery html json ajax api


    【解决方案1】:

    不要将数据存储在 HTMLDivElement 的“data-”属性中,只需在您的 javascript 中保留对来自 API 的 JSON 响应的引用并存储 indexid 在“data-”属性中(可能是“data-post-id”)

    var blogData = [{Title: .., Description: ...}, ...]; //Data from JSON Response
    
    ...
    ...
    
    $('<div class = "title-list" data-post-id =' + postId +'>' + title + '</div>').appendTo(monthblogList);
    
    ...
    ...    
    
    function showBlogEntry(element){
          var id = $(element).data('post-id')
          var close = $('<span id = close> x </span>')
    
          blogEntry.empty()
    
          $(close).appendTo(blogEntry)
          $('<h3>' + blogData[id].Title + '</h3>').appendTo(blogEntry)
          $(blogData[id].Description).appendTo(blogEntry)
    
          $("#close").on("click", function (event) {
            blogEntry.empty()
            about.fadeIn()
          });
        }
    

    【讨论】:

    • 这个逻辑是有道理的,但是当我应用它时,它仍然有点问题。我可能没有正确定义 postId,你能试着解释一下吗?或者也许在 codepen/jfiddle 上演示?编辑:我的 CodePen 中的变量 jData 被认为是 blogData
    • codepen.io/jmdejno/pen/MqeymL。我将 'var postData' 添加到 JS 文件的顶部,然后将值缓存以供以后在 'showBlogEntry' 中使用,同时将 id(或者,在本例中为数组索引)放在 'data-post-id' 中跨度>
    • 谢谢!看完之后感觉就更明白了。荣誉
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2019-11-23
    • 1970-01-01
    • 1970-01-01
    • 2019-05-28
    • 1970-01-01
    相关资源
    最近更新 更多