向InstafeedJS添加“显示较少”按钮

时间:2018-10-01 12:56:20

标签: javascript instagram instafeedjs

使用InstafeedJS,我希望能够添加一个按钮,以隐藏在初始Feed后加载的所有内容(例如,用户单击“显示一次或多次”)。我最初的想法是将类或数据标签添加到其他供稿项,然后使用自定义按钮将其隐藏。但是我不确定如何通过脚本添加这些引用。有什么想法吗?

当前代码:

      var loadButton = document.getElementById('instafeed-loadmore');

      var feed = new Instafeed({
          get: 'user',
          type: 'image',
          limit: '5',
          sortBy: 'most-recent',
          resolution: 'standard_resolution',
          userId: <?php echo $instagram_id; ?>,
          accessToken: '<?php echo $instagram_token; ?>',
          template: '<li><span class="instagram-post" data-url="{{link}}" data-modal="instagram-popup" data-caption="{{caption}}" data-image="{{image}}" style="background-image: url({{image}});"></span></li>',
          after: function() {
              if (!this.hasNext()) {
                  loadButton.setAttribute('disabled', 'disabled');
              }
          }
      });

      loadButton.addEventListener('click', function() {
          feed.next();
      });

      feed.run();

2 个答案:

答案 0 :(得分:1)

虽然Dipen的回答很好,但您似乎并没有使用jQuery,但这是标准的Js

var limit = 4;
var feed = new Instafeed({
  target: 'instafeed',
  get: 'user',
  type: 'image',
  sortBy: 'most-recent',
  limit: limit,
  resolution: 'standard_resolution',
  userId: <?php echo $instagram_id; ?>,
  accessToken: '<?php echo $instagram_token; ?>',
  template: '<img class="instagram-post" src={{image}} />',
  after: function() {
    if (!this.hasNext()) {
      document.getElementById('btnMore').attr('disabled', 'disabled');
    }
  }
});

document.getElementById('btnMore').on('click', function(e) {
  document.getElementsByClassName("instagram-post:nth-child(n+" + (1 + limit) + ")").show();
  feed.next();
});

document.getElementById('btnLess').on('click', function(e) {
  document.getElementsByClassName("instagram-post:nth-child(n+" + (1 + limit) + ")").hide();
});

feed.run();

(P.S。正如我仅对“ JQueryified”一词,它是为您接受他的答案,而不是我的答案。)

答案 1 :(得分:0)

您可以通过脚本添加引用,也可以在加载的元素上添加自定义数据属性(有多种方法可以实现所需的功能),但我认为您可以使用CSS选择器选择在初始Feed后加载的所有元素并应用某些样式(隐藏),如下面的代码片段所示。

var limit = 4;
var feed = new Instafeed({
  target: 'instafeed',
  get: 'user',
  type: 'image',
  sortBy: 'most-recent',
  limit: limit,
  resolution: 'standard_resolution',
  userId: <?php echo $instagram_id; ?>,
  accessToken: '<?php echo $instagram_token; ?>',
  template: '<img class="instagram-post" src={{image}} />',
  after: function() {
    if (!this.hasNext()) {
      $('#btnMore').attr('disabled', 'disabled');
    }
  }
});

$('#btnMore').on('click', function(e) {
  $(".instagram-post:nth-child(n+" + (1 + limit) + ")").show();
  feed.next();
});

$('#btnLess').on('click', function(e) {
  $(".instagram-post:nth-child(n+" + (1 + limit) + ")").hide();
});

feed.run();
.instagram-post {
  width: 100px;
  height: 100px;
  display: inline-block;
  margin: 15px;
}
<div id="instafeed"></div>

<button id="btnMore">Load More...</button>
<button id="btnLess">Show Less...</button>

根据需要修改代码。

展开:

$('#btnLess')的click事件处理程序中,我从索引.instagram-post中选择所有类别为limit + 1的图像,并将其隐藏。

$('#btnMore')的click事件处理程序中,我确保提要中的所有可用图像都是可见的,以便在按$('#btnLess')后每当按下它时,提要中所有先前加载的图像都将也是可见的。

希望有帮助。