【问题标题】:preventDefault javascript doesnt prevent url redirectpreventDefault javascript 不会阻止 url 重定向
【发布时间】:2012-10-10 06:59:30
【问题描述】:

我的html是

<a class="delete" href="/FolderComment/delete/12">delete</a>

我的js是

$("a .delete").click(function(e){

          //e.preventDefault();   --> tried that too
            var href = this.attr("href");
            $.post(
                href, {},
                function(data){
                    alert(data);
                }
            );
            return false;
        });  

但它不起作用,页面被重定向。

这是jsfiddle

【问题讨论】:

    标签: javascript preventdefault


    【解决方案1】:

    您的选择器应该是a.delete - 请注意空间不足。

    正如所写的那样,您的回调处理程序甚至没有被调用,因为您的选择器正在寻找一个 .delete 类的元素,它是从 &lt;a&gt;下降的,而不是 &lt;a&gt;那个班级。

    其次,出于安全原因,如果链接指向远程资源,您的浏览器可能不允许劫持链接。

    正如@NickW 所指出的,可以重定向页面本地链接(以# 开头)。但是,如果您希望您的页面在没有 JS 的情况下正常工作,那么您可能无法做到这一点。

    在这种情况下,一个简单的解决方法是在页面加载时使用 JS 重写所有此类链接:

    $('a[href^="/"]').attr('href', function(index, val) {
        return '#' + val;
    });
    

    【讨论】:

      【解决方案2】:

      如果您的href 前面带有#,您应该能够避免重定向。我已经分叉了你的JS fiddle 并添加了来自@Alnitak 的选择器更改。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-12-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-04-16
        • 1970-01-01
        • 2014-04-27
        相关资源
        最近更新 更多