【问题标题】:Create button in Facebook API to show/hide (toggle)在 Facebook API 中创建按钮以显示/隐藏(切换)
【发布时间】:2014-12-25 19:51:42
【问题描述】:

我正在使用 Facebook Javascript API。我想创建这样的东西:

1. Album Name [show/hide]

Album details

2. Album Name [show/hide]

Album details

3. Album Name [show/hide]

Album details
  1. 首先我检索了专辑列表
  2. 专辑名称旁边会有一个按钮,可以使用 jQuery 切换(显示/隐藏)专辑的详细信息。
  3. 专辑详情被放入具有特定 ID 的 p 标签中(“album1”、“album2”等...)
  4. 使用 jQuery 切换特定 ID。
  5. 但是,在 FB.api 中创建的按钮 in1 无法切换。
  6. FB.api 之外的另一个按钮 out1 可以切换。

QNS:为什么FB.api里面的按钮不能切换?

我只想为每张专辑制作一个特定的按钮,这样我就可以专门切换每张专辑的详细信息。

部分代码如下:

<script>
    function albums()
    {

    FB.api('me/albums/', function(response) {
      for (var i=0; i<response.data.length; i++) {
        var album = response.data[i]; // each album

        // Album Name
        var albumName = response.data[i].name;
        var para = document.createElement('p');
        var node = document.createTextNode(albumName);
        para.appendChild(node);
        document.body.appendChild(para); // put p into body of document

        // Button
        var btn = document.createElement("button");
        btn.id = "in"+(i+1);
        var t = document.createTextNode("inside");      
        btn.appendChild(t);
        document.body.appendChild(btn);  


        // Album Details
        var para = document.createElement('p');
        para.id = "album"+(i+1);
        var node = document.createTextNode("Album details");
        para.appendChild(node);
        document.body.appendChild(para);
        }   


    });
    }
</script>   

<script src="//code.jquery.com/jquery-1.10.2.js"></script>

<button id="out1">out1</button>
<script>
jQuery( "#out1" ).click(function() {
  jQuery( "#album1" ).toggle();
});
jQuery( "#in1" ).click(function() {
  jQuery( "#album1" ).toggle();
});
</script>   

【问题讨论】:

    标签: javascript facebook api button toggle


    【解决方案1】:

    您正在尝试在异步加载的元素上放置一个偶数侦听器。意思是,按钮还不存在。确保您了解异步的含义,这对于 JavaScript 开发人员非常重要,尤其是在使用 Facebook JS SDK 时。并在创建/显示按钮后立即向按钮添加事件侦听器。

    另外,请记住,您只会在第一个按钮上放置一个事件监听器。

    【讨论】:

    • 好的,谢谢。我将阅读更多关于异步的内容。那么如何创建按钮监听器呢?
    • 要么在创建按钮之后——这会导致很多事件监听器——要么就在 for 循环之后(例如,$('.yourbuttonclass').click...)。更好的是:根本不要对那些简单的事情使用 jquery。有“addEventListener”,原生 javascript 的东西。
    • 主要是当您尝试添加事件侦听器时未创建您的按钮。如何正确编程取决于您,有很多方法可以解决这个问题。尝试理解代码,这总是很重要的。如果你了解一切是如何运作的,那就很容易了。
    猜你喜欢
    • 2011-05-30
    • 2020-07-05
    • 2019-09-28
    • 1970-01-01
    • 2011-07-07
    • 2017-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多