我一直在使用空的hrefs(href =“#”)并允许jQuery click事件从我的控制器获取数据并在局部视图中显示它。
但是,我想实现jQuery Address插件,以便可以使用后退按钮。据我所知,我需要停止使用空的hrefs。 (我想拥有空的hrefs也是不好的做法。)
我的新链接看起来像这样。
<a href="/Stop/Details/<%: item.StopID %>">
<div class="stopId"><%: item.StopID %></div>
</a>
但是现在不是我的jQuery点击事件捕获它,而是立即重定向到/ Stop / Details,这不是我想要的,因为那是部分视图。我该如何解决这个问题?
编辑:我刚刚意识到我的标题不准确。对于那个很抱歉。将尝试考虑更准确的标题并进行更改。
双重编辑:还意识到div不应嵌套在链接中。
我的点击事件实际上是实时点击。它看起来像这样:
$(function () {
$(".stopId").live('click', function () {
var stopId = $(this).html()
$.post('<%= Url.Action("Details") %>',
{ id: stopd },
handleSuccess
);
});
});
答案 0 :(得分:2)
您可能希望阻止默认操作发生在您的锚点的单击功能中。这将阻止浏览器在您单击链接时跟踪链接。你没有发布你的jQuery点击代码,但它应该是这样的:
$('a').click(function(e) { //Edit note the e
//Your code here
e.preventDefault(); //This stops the browser from following the link
});
修改强>
实际上,在查看jQuery address plugin文档后,我认为您希望链接看起来像这样:<a href="#/Stop/Details/<%: item.StopID %>">
(注意#)。这也可以解决您的问题。
答案 1 :(得分:2)
如果没有看到你的jQuery点击处理程序,我无法确定,但你还记得使用return false
或event.preventDefault
:
$('a').click(
function(){
// other stuff
return false;
});
或者:
$('a').click(
function(e){
e.preventDefault;
// other stuff
});
参考文献: