javascript - 如何添加显示/隐藏评论链接不适用于 underscore.js

标签 javascript jquery underscore.js

更新 - 为了帮助解释这一点,我创建了一个 fiddle ,可以在这里找到 http://jsfiddle.net/Dano007/b11xarpp/5/

概述。

我想在我的评论中添加阅读更多/折叠链接,如果超过一定大小,评论的可见性将受到限制,用户将点击“阅读更多”来查看它们。

我在这里找到了这个示例 JS 代码,它看起来很完美。 http://jsfiddle.net/xn6Sp/9/

问题。

我正在使用 underscore.js .each 包装器在页面上显示我的评论,如下所示。

_.each(Badges, function (item) {
  var wrapper = $('<div></div>');

  wrapper.append('<div id="comments"  class="item"></div>' + ' Reason: ' + item.comment + '</div>' + '<br>');

  $('#container').append(wrapper);

}); 

但是,使用它似乎会产生以下问题。 1 - 阅读更多链接未正确附加 2 - 看起来 JS 读取的 div 内容是空的,因此不起作用。

赏金适用于: 1 - 使用此 jfiddle 中显示的代码使阅读更多/折叠链接正常工作。 http://jsfiddle.net/Dano007/kgybcuqq/1/

最佳答案

我发现了问题。

myBadgeQuery.find 是异步方法,成功函数仅在从服务器(本例中为 parse.com)检索数据后调用。

所以理想情况下,折叠逻辑应该在将数据追加到 DOM 中之后执行。

我创建了名为 collapseIt 的函数,并将所有折叠逻辑包装在其中,并在 myBadgeQuery.findsuccess 中调用它..

myBadgeQuery.find({
  success: function (Badgeresults) {

    var Badges = [];
    for (var i = 0; i < Badgeresults.length; i++) {
      Badges.push({
        comment: Badgeresults[i].get('Comment'),


      });

    }

    _.each(Badges, function (item) {
        console.log("Got the data");
      var wrapper = $('<div></div>');

      wrapper.append('<div id="comments"  class="item"></div>' + ' Reason: ' + item.comment + '</div>' + '<br>');

      $('#container').append(wrapper);


    });                            

    //Invoke collapse code after you append the data. This is async function so you have to wait till data is appended.
    collapseIt();


  },
  error: function (error) {
    alert("Error: " + error.code + " " + error.message);
  }
});

折叠代码:

   //////////////////Hide/show comments on code//////////////
var collapseIt = function(){
     var collapsedSize = '20px';
   $('.item').each(function() {
    console.log("inside each");       
    var h = this.scrollHeight;

    console.log(h);
    var div = $(this);
    if (h > 30) {
      div.css('height', collapsedSize);
      div.after('<a id="more" class="item" href="#">Read more</a><br/>');
      var link = div.next();
      link.click(function(e) {
        e.stopPropagation();

        if (link.text() != 'Collapse') {
          link.text('Collapse');
          div.animate({
            'height': h
          });

        } else {
          div.animate({
            'height': collapsedSize
          });
          link.text('Read more');
        }

      });
    }

  });   
};

更新了 fiddle ..应该适合你。 http://jsfiddle.net/rahulrulez/kgybcuqq/3/

摆弄单独的可折叠链接:http://jsfiddle.net/rahulrulez/kgybcuqq/4/

关于javascript - 如何添加显示/隐藏评论链接不适用于 underscore.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25330127/

相关文章:

javascript - 具有公共(public)值的单个文件中的多个下划线模板

javascript - 当属性位于另一个对象中时如何将 _.groupBy js 用于组对象 - TypeScript

javascript - 如何在 Flow 中使用(或模拟)具有覆盖字段的对象传播?

javascript - 确定 div 的一侧

javascript - 左上角 Logo 滚动到屏幕停止

javascript - 如何在 cURL 请求中传递 Javascript 操作

jquery - ASP 相当于 isset($_POST)

javascript - ES6 的下划线方法

javascript - Angular 中的 Pubnub 聊天

javascript - 检查表单中所有复选框的状态