当前位置: 首页 > 知识库问答 >
问题:

在ajax页面加载更改内容后,无法使每个页面都工作

张鹏云
2023-03-14

在页面加载时,我运行这个函数将长引用文章隐藏到可点击的链接中,以防止在我的站点上出现大量评论:

function hide_long_quotes()
{
    $('.comments .comment_quote').each(function(i) 
    {
        var actual_text = $(this).text();
        var content = $(this).outerHTML();

        if(actual_text.length > showChar) 
        {
            var cite = $(this).find('cite span.username').first().text();
            var cite_link = '';

            if (cite.length > 0)
            {
                cite_link = 'from ' + cite;
            }

            var html = '<span class="morecontent">' + content + '</span><a href="" class="morelink">' + moretext + cite_link + '</a><br />';

            $(this).replaceWith(html);
        }
        if (i+1 === quote_count) // this will be executed at the end of the loop
        {
            // deal with being linked to a comment, so we can put the window to the correct scroll position, since it will be different due to hidden quotes making the page smaller
            if(window.location.hash) 
            {
                var hash = window.location.hash.substring(1); //Puts hash in variable, and removes the # character
                if (hash.indexOf("r") >= 0)
                {
                    $('#'+hash)[0].scrollIntoView();
                }
            }
        }
    });
}

问题是,当我通过Ajax/load重新加载“.comments”时,上面的函数不再起作用:

function paginate_comments(page, article_id)
{
    var url = "/includes/ajax/post_comment.php";
    var current_url = window.location.href;
    var host = window.location.host;
    
    if(current_url.indexOf(host + '/admin.php?module=reviewqueue') != -1 || current_url.indexOf(host + '/admin.php?module=articles&view=Submitted') != -1 || current_url.indexOf(host + '/admin.php?module=articles&view=Submitted') != -1)
    {
        var area = 'admin';
    }
    else
    {
        var area = 'normal';
    }
    
    $('.comments').load(url, {'type':'reload', 'article_id': article_id, 'page': page, 'area': area}, function()
    {
        $(".lb-container").show();
        $('.box.comments').get(0).scrollIntoView();
        hide_long_quotes();
    });
}

不确定为什么它不起作用,因为函数是在加载函数的已完成的回调部分中调用的?

共有1个答案

南门承教
2023-03-14

将元素集合赋予该函数怎么样:

function hide_long_quotes(var comments = false)
{               /* for the case that you don't pass a collection to the function, maybe in the first call when the page is loaded */
    comments = comments ? comments : $('.comments .comment_quote');
    
    comments.each(function(i) 
    {
...
}

function paginate_comments(page, article_id)
{
...
    $('.comments').load(
        url, 
        {
            'type':'reload', 
            'article_id': article_id, 
            'page': page, 
            'area': area
        }, 
        function() 
        {
            $(".lb-container").show();
            $('.box.comments').get(0).scrollIntoView();
            hide_long_quotes($('.comments .comment_quote'));
        }
    );
}
 类似资料:
  • 问题内容: 我正在将Selenium WebDriver与Java一起使用。我试图访问该页面中的“登录ID”文本框,但是每次登录和注销时,针对“登录ID”文本框的XPath值都会更改,因此我无法检测到“登录ID”文本框每次都使用相同的代码。 我需要在代码中进行哪些修改,以便能够通过单个代码访问所有动态XPath? 问题答案: 以下是可能用作解决方法的示例 xpath的类型: 多个匹配项: 部分匹配

  • 问题内容: 我从数据库获取数据并将其显示在div中…我要做的是单击链接时应更改div的内容 一种选择是通过URL将参数传递给自身并重新加载页面… 我需要这样做而 无需重新加载\刷新 … 目的是当我单击任何链接时,div和php变量的内容无需刷新即可更新....这样 用户可以看到新数据 ,然后如果执行某些查询,它将在新变量上 ps我知道它将需要一些AJAX,但我不知道AJAX ..所以请以我可以学习

  • 问题内容: 有没有办法做到这一点? page1.php-有 index.php-有 我可以以某种方式从div内部的page1.php中获取数据并将其加载到index.php中的div中吗? 我已经使用css-tricks网址中提供的代码完成了此操作:http : //css- tricks.com/examples/DynamicPage/ 但这使用哈希更改事件。我不想使用哈希功能,而只想使用加载

  • 问题内容: 如果不使用iframe,则可以加载以下内容: 与外部站点,例如somesitehere.com 页面何时加载?-我知道如何从文件加载内容,但是不确定如何加载整个网站吗? 非常感谢, 问题答案: 无需专门的操作就可以做到。由于标题中提到了jQuery,因此使用了jQuery。

  • 本文向大家介绍ajax实现页面加载和内容删除,包括了ajax实现页面加载和内容删除的使用技巧和注意事项,需要的朋友参考一下 ajax最大的好处就在于加载和删除的时候不会跳转页面,现在的网页大多都会选择用ajax来写,相比嵌入PHP代码来说减少了代码量,同时加载页面也会比较快,下面是用ajax以数据库fruit表为例写的加载页面和水果的删除,刚开始用ajax可能写起来还是会比较手生,就当是练习好了。

  • 关键是,在元素出现之前,Wait不会等待30秒。代码只是抛出一个异常: 任何帮助都将不胜感激!