在我的母版页中,我有以下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错误。
答案 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>
都会阻止默认行为。
这是我从超链接加载模态窗口的方法。
希望它有所帮助。
由于