如果我的href是空的,jQuery Address插件是否有效?

时间:2011-04-06 18:14:50

标签: jquery asp.net-mvc jquery-click-event jquery-address

我一直在使用空的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
        );
});
});

2 个答案:

答案 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 falseevent.preventDefault

$('a').click(
    function(){
        // other stuff
        return false;
    });

或者:

$('a').click(
    function(e){
        e.preventDefault;
        // other stuff
    });

参考文献: