如何防止HTML.ActionLink上的默认?

时间:2011-07-13 03:41:59

标签: jquery asp.net asp.net-mvc

在我的母版页中,我有以下ActionLink:

 <%=Html.ActionLink("Reset State", "ResetState", "State", null, new { id = "resetButton" })%>

在我看来,这个母版页中的哪个inherts,我定义了以下点击事件:

 $(document).ready(function () {
    $("#resetButton").click(function (e) {
        var context = org.testportal.context;
        var appId = context.currentApplicationId;
        var userId = context.currentUserId;
        var hwid = context.currentHwid;

        if (contextIsValid()) {
            $.get('/State/ResetState', { applicationId: appId, userId: userId, hwid: hwid },
   function (data) {
       openDialogBox(data);
   }, "json");
        }
        else {
            var data = { message: "Invalid Context" };
            openDialogBox(data);
        }
        e.preventDefault();
    }); //resetState
});

目前,当用户单击链接时,“重置状态”链接使用NULL参数向我的控制器操作发出GET请求。永远不会引发click事件,并且不会停止事件默认值(因此会显示)。上面的javascript被添加到我的视图的页脚中。

使用Firebug我可以看到该事件绑定在$(document).ready()上。此时在页面上找到$(“#resetButton”)。事件发生时我用手表确认了这一点。

关于为什么我的js可能不会被解雇的任何想法?

由于

否认

我是个傻瓜。我在脚本中发现了一个js错误。

2 个答案:

答案 0 :(得分:1)

我通常会添加return false以防止点击事件的默认行为:

$(document).ready(function () {
    $("#resetButton").click(function (e) {
        var context = org.testportal.context;
        var appId = context.currentApplicationId;
        var userId = context.currentUserId;
        var hwid = context.currentHwid;

        if (contextIsValid()) {
            $.get('/State/ResetState', { applicationId: appId, userId: userId, hwid: hwid },
   function (data) {
       openDialogBox(data);
   }, "json");
        }
        else {
            var data = { message: "Invalid Context" };
            openDialogBox(data);
        }
        return false;
    }); //resetState
});

如果仍然没有阻止默认行为,那么您的事件不会绑定,这意味着在调用document.ready时您的resetButton不存在。

答案 1 :(得分:0)

如果您有一个id ='link'的锚点,这可能会阻止默认行为:

$('#linl').click(function (e) { e.preventDefault(); }

如果您希望特定类型的所有超链接都具有此行为:

$('a[name=modal]').click(function (e) {            
  e.preventDefault();
  ....
}

此处任何<a name="modal" ...>link</a>都会阻止默认行为。

这是我从超链接加载模态窗口的方法。

希望它有所帮助。

由于