作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的 Controller 创建一个这样的链接列表
<ul id="MainMenu">
@foreach (var item in Model.MenuItems)
{
<li>@Ajax.ActionLink(item.Caption,
item.ActionName,
item.ControllerName,
new AjaxOptions
{
UpdateTargetId = "pageBody",
OnBegin = "BeginUpdatePage",
OnComplete = "EndUpdatePage",
OnFailure = "FailUpdatePage"
})
</li>
}
</ul>
我有一些像这样的JavaScript
function BeginUpdatePage() {
$("#MainMenu li").removeClass('selected');
$(this).parent().addClass('selected');
$("#pageBody").fadeTo('slow', 0.5);
}
function EndUpdatePage() {
$("#pageBody").fadeTo('slow', 1);
}
function FailUpdatePage() {
alert('There has been an error loading this page please try again.');
}
BeginUpdatePage 函数中的第 1 行和第 3 行执行正常,但第 2 行 "$(this).parent().addClass('selected');"没有明显做任何事情...(我已经在我的 css 中声明了该类)。
我查看了 Jquery 文档 ( Jquery.ajax() ),它说“this”是被单击的元素。我还检查了默认情况下在我的项目中的“jquery.unobtrusive-ajax.js”。该文件在执行我的函数时也会传递“this”。
"result = getFunction(element.getAttribute("data-ajax-begin"), ["xhr"]).apply(this,arguments);"
我在这里做错了什么...我已经看到other examples已经使用了这种技术,但我一整天都失败了!
如何在 Begin 中获取被单击的元素,完成函数。
最佳答案
2014 年 1 月 20 日更新:不引人注目的 ajax 脚本的官方 3.1 版本包含此更改,并与 MVC 5.1 版本(1 月 17 日)同时发布。去检查一下:-)
原始回复
我遇到了this不久前即可实现您正在寻找的结果。非常简单易做。
在 jquery.unobtrusive-ajax.js 文件的第 100 行附近,添加这一行代码。
options.data.push({ name: "X-Requested-With", value: "XMLHttpRequest" });
options.context = element; // <--- Add this line
method = options.type.toUpperCase();
if (!isMethodProxySafe(method)) {
options.type = "POST";
options.data.push({ name: "X-HTTP-Method-Override", value: method });
}
就是这样,您现在应该能够使用 this
来引用源元素。
关于jquery - 如何在 MVC3 Ajax.ActionLink OnBegin、OnComplete 事件中使用 $(this),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6630189/
我是一名优秀的程序员,十分优秀!