【问题标题】:jQuery Script not working with appended datajQuery 脚本无法处理附加数据
【发布时间】:2016-07-12 09:50:54
【问题描述】:

我正在做一个包含内容块的无限滚动网页。每个块都有一个

用于添加描述的标签。此描述应包含相对于其长度的更多/更少按钮。脚本适用于第一个加载的内容块。我的问题是,在滚动时,会附加新块,其中更多/更少按钮未显示。

我的 html p 标签类是“wall_post_para”

我的脚本是

var showChar = 100;
var ellipsestext = "...";
var moretext = "More";
var lesstext = "Less";

$('.wall_post_para').each(function() 
{
    var content = $(this).html();
    if(content.length > showChar) 
    {

        var c = content.substr(0, showChar);
        //alert(c);
        var h = content.substr(showChar-1, content.length - showChar);
        //alert(h);
        var html = c + '<span class="moreellipses">' + ellipsestext+ '&nbsp;</span><span class="morecontent"><span>' + h + '</span>&nbsp;&nbsp;<a href="" class="morelink">' + moretext + '</a></span>';
         $(this).html(html);
    }

});



 $(".morelink").click(function()
{
    if($(this).hasClass("less"))
    {
        $(this).removeClass("less");
        $(this).html(moretext);
    } 
    else 
    {
        $(this).addClass("less");
        $(this).html(lesstext);
    }
    $(this).parent().prev().toggle();
    $(this).prev().toggle();
    return false;
});

我尝试使用委托,但我不知道如何将委托与 .each() 一起使用。请帮助我。

【问题讨论】:

  • 在 SO 中搜索“事件委托” - 有 100 个 SO 问题/答案
  • 你能分享我的链接吗?
  • 当你向下滚动时——究竟如何添加新块?这不包括在问题中。该代码提供了“修复”现有块。将此作为函数并在添加新函数时调用它。
  • 我使用 ajax 追加数据。这些数据包含大量 html 内容以及描述 p 标签。
  • 您不需要整个$(".wall_post_para") 代码 - 只需使用已经内置的“更多”构建您的 html。

标签: jquery delegates


【解决方案1】:

代表。改变这个:

$(".morelink").click(function()

到这里:

$(document).on('click', '.morelink', function()

这将允许任何附加的.morelink 使用点击处理程序,因为它会遍历文档直到每个 .morelink...

【讨论】:

  • 嗨,附加数据的描述字段中根本没有出现“更多”/“更少”链接。向下滚动时会显示完整的说明。
  • 查看@mattgl 的回答和我的评论——这就是你需要做的。
【解决方案2】:

我相信斯图尔特的回答解决了你实际描述的问题一旦解决就会出现的部分问题。 在我看来,您正在运行您的脚本,该脚本仅对具有“wall_post_para”类的段落进行一次迭代。然后将更多这些元素添加到您的页面中。当然,这些不受之前运行过的代码的影响。 您需要做的:每当一个新段落添加到您的页面时,运行添加省略号和“更多”按钮的代码。如何执行此操作取决于添加新段落的方式。也许您想详细说明一下以获得更具体的答案。

【讨论】:

  • 这是正确的方向。每个循环中的代码 - 将其包装成一个您可以调用的函数,然后确保也为每个追加调用它。
  • 我正在通过 ajax 添加新数据。现在我的疑问是,如果我将代码包装在其中,我应该在哪一点调用此函数。这就是我将新数据附加到 div .done(function(data) { $("#wall_Scrollcontent").append(data); }) 的方式
猜你喜欢
  • 1970-01-01
  • 2012-08-06
  • 2012-01-08
  • 2016-01-09
  • 1970-01-01
  • 2011-11-24
  • 2016-02-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多