0

我的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

4

2 回答 2

3

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

正如所写的那样,您的回调处理程序甚至没有被调用,因为您的选择器正在寻找一个类的元素,该元素.delete来自一个<a>而不是具有<a>该类的一个。

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

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

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

$('a[href^="/"]').attr('href', function(index, val) {
    return '#' + val;
});
于 2012-10-10T07:04:00.660 回答
1

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

于 2012-10-10T07:07:10.030 回答