gpt4 book ai didi

jquery - 如何在 MVC3 Ajax.ActionLink OnBegin、OnComplete 事件中使用 $(this)

转载 作者:行者123 更新时间:2023-12-03 22:21:02 25 4
gpt4 key购买 nike

我的 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com