如何防止规范网址

时间:2016-04-06 14:56:06

标签: javascript php html

我在home.php上有一个锚点链接,链接到这个:

<a href='#?id=$thought_id' class='toggle-comment' data-id='$thought_id' '> Comments ($num_of_comments) </a>

当鼠标悬停在此锚链接上时,我希望看到如下结果:

localhost/#?id=210

但是我得到了这个:

localhost/home.php#?id=211  

我见过类似的问题here:但是,应用了最佳答案所表明的结果,我仍然得到了相同的结果。我在profile_page.php上也有完全相同的锚链接,并且在那里工作得很好。

锚点链接并不意味着去任何地方,点击它会动态地放大它下方的div,显示评论。

修改

锚链接如何工作

  1. 单击时,锚链接会展开其下方的div。点击后,会显示此div:echo "<div id='toggleComment$thought_id' class='new_comment'>";

  2. 然后,对于添加到此thought的每个新评论,另一个div是echo&#39; d

    <div class='new_comm' id='thoughtId".$thought_id."-childId".$comment['id']."'>

  3. 实现此目的的JavaScript

    $(function() {
        $("a.toggle-comment").on("click", function(event) {
            // prevents browser to go to href's #
            event.preventDefault();
            // uses Jquery's data() function to get comment id from link's data-id attribute
            var id = $(this).data('id');       
            // get element by id and toggle display
            var ele = document.getElementById("toggleComment" + id);
            $(ele).toggle();
        });
    });
    

    编辑2

    与Rocki在聊天中得出结论。问题是我将JavaScript定义了两次,一次在home.php的源代码中,一次在functions.js中,同样位于head的{​​{1}}中。从源代码中删除了脚本,代码开始运行。

2 个答案:

答案 0 :(得分:2)

#后面的所有内容都被解释为哈希片段,而不是发送到服务器。相反,您的浏览器会更改当前页面的哈希片段。

RFC 2396:统一资源标识符(URI):通用语法

  

排除字符“#”,因为它用于分隔URI   来自URI引用中的片段标识符(第4节)。

https://tools.ietf.org/html/rfc2396

答案 1 :(得分:0)

使用

<a href='/#?id=$thought_id' class='toggle-comment' data-id='$thought_id' '> Comments ($num_of_comments) </a>

代替(在你的网址之前/之前)