【问题标题】:Insert Comment Reply Form Into Page Using Jquery使用 Jquery 将评论回复表单插入页面
【发布时间】:2010-10-02 05:57:56
【问题描述】:

我一直在制作一个线程评论系统,作为正确学习 php 和 javascript/jquery 的一种方式。我过去做过一些零碎的工作,但我下定决心要好好学习它。

我无法将回复表单插入到正在回复的评论下方的评论树中。我知道这可能很基础,但是当有人点击链接时,如何将 html 插入页面。

这段代码对我不起作用:

$(document).ready(function(){
    $(function() {
        $('a#reply').click(function() {

            $(this).append("the html blah");    

        });
    });

}); 

有人知道我哪里出错了吗?

【问题讨论】:

    标签: jquery multithreading forms comments


    【解决方案1】:
    $(document).ready(function(){
            $('a#reply').click(function() {
                $(this).after("the html blah");
                return false;
            });
    });
    

    你可能需要'return false;'在那里,当您单击链接时阻止页面重新加载。

    【讨论】:

    • 谢谢,这似乎是有道理的,但我仍然被重定向到我的页面顶部。我的链接只是 .
    • 链接到 '#' 将跳转到页面顶部,因为它正在寻找与其匹配的锚点 - 在本例中是第一个元素(正文),因为它是一个空白锚点。 return false 应该规避这一点。它可以帮助发布测试页面的链接或粘贴上面的 HTML。
    • 感谢 sancho 的帮助,但 Corey 在页面下方的帖子中发现了问题
    • 当您点击回复时,每次点击一条评论都会产生“html blah”。示例:“html blahthe html blahthe html blahthe html blahthe html blahthe html blahthe html blah”。对于每次点击,这个插件可以评论,但我想打开一个文本区域,所以它必须只能点击一次。那么有什么建议吗?
    【解决方案2】:

    如果其他建议均无效,则可能是您的链接选择器无法正常工作。在您提供的示例中,您似乎正在寻找这样的链接:

    <a id='reply' href='#'>add comment</a>
    

    正确吗?你没有提到你是如何生成 html 的,但我知道 asp.net 的服务器端 id != 客户端 id,你需要像这样修改你的选择器:

    $('a[id$=reply]')
    

    无论如何,这是一个完整的 html 示例,对我来说效果很好:

    <html>
        <head>
            <script type="text/javascript" src='scripts\jquery-1.2.6.min.js'></script>
        </head>
        <body>
            <div style='height:400px'>
                Space to demonstrate that clicking the link does not scroll the page.
            </div>
            <div id='main'>
                <a href='#' id='clicky'>here</a>
            </div>
        </body>
        <script>
            $(function(){
                $('a#clicky').click(function(){
                    $(this).after('Hello There')
                    return false;
                });
            });
        </script>
    </html>
    

    【讨论】:

    • 您好,我尝试了您的代码并且它现在可以正常工作,认为 $(document).ready(function(){ 可能太多了,但不管是什么,您都帮了很大的忙。谢谢。
    • 您好,Corey,如果您能再次帮助我,我将不胜感激。我发现该函数只会为页面上 a#id 的第一个实例插入 html。由于每条评论都有回复按钮,这是个大问题,有什么想法吗?
    • 多个元素的 ID 相同是无效的。我建议将该 ID 更改为一个类,然后相应地修改您的选择器 $('a.className')
    【解决方案3】:

    要添加到 rodbv 的答案,您将在由于您使用 append 而被点击的链接添加文本“html blah blah”。改成:

    $(this).after("the html");
    

    它会在 链接之后写出 html。

    【讨论】:

    • 感谢您的提示,页面上仍然没有任何内容。我被重定向到页面顶部,因为我的锚链接到 # ()
    • 添加一个“return false;”在活动结束时。
    猜你喜欢
    • 1970-01-01
    • 2012-12-09
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-12
    • 2016-12-12
    • 1970-01-01
    相关资源
    最近更新 更多