当前位置: 首页 > 面试题库 >

在OnSuccess处理程序中获取对Ajax.ActionLink的anchor元素的引用

汪志业
2023-03-14
问题内容

基本上,除了我使用的是MVCRazor外,我的问题与该问题相似甚至重复。而且我确定那里的答案已经过时了,因为当前使用的客户端库是jQuery /不显眼的Ajax。

因此,总而言之,我正在尝试OnSuccess在提供的属性中指定的处理程序中访问触发Ajax请求的锚元素AjaxOptions

这是ActionLink

@Ajax.ActionLink("Add opening times entry", "AddOpeningTimes", 
  new { htmlPrefix = Html.HtmlPrefixFor(m => Model.OpeningTimes) },
  new AjaxOptions { UpdateTargetId = "openingTimes",
    InsertionMode =  nsertionMode.InsertAfter,
    OnSuccess = "updateHtmlPrefix" },
  new { title = "Add opening times entry" })

JS:

function updateHtmlPrefix() {
  this.href = this.href.replace(/\d(?=]$)/, function (i) { return ++i; });
}

问题答案:

你总是可以写

 OnBegin="function() { clickedLink = $(this); }"

然后,您可以在成功处理程序中访问clickedLink变量(请记住使用页面范围对其进行声明)。

编辑:

在对调用堆栈进行一些操作之后,您可以尝试如下操作:

<script type="text/javascript">    
    function start(xhr) {        
        var stack = start.caller;
        // walk the stack
        do {
            stack = stack.caller;            
        } while (stack.arguments != undefined && stack.arguments.length > 0 && (stack.arguments[0].tagName == undefined || stack.arguments[0].tagName != "A"))
    //stack now points to the entry point into unobtrusive.ajax
    if (stack.arguments != undefined)
        xhr.originalElement = $(stack.arguments[0]);

    //blech        
}

function UpdateHrefText(result, status, xhr) {
    debugger;
    if(xhr.originalElement != undefined)
        xhr.originalElement.text(result.Message);
}
</script>


@Ajax.ActionLink("Test", "Message", "Home", new AjaxOptions{ OnBegin = "start", OnSuccess = "UpdateHrefText"})

虽然不确定我会在生产中相信这一点。我会做更多类似的事情:

<script type="text/javascript">
var theLink;

function start(xhr) {
    xhr.originalElement = theLink;        
}

function UpdateHrefText(result, status, xhr) {
    debugger;
    if(xhr.originalElement != undefined)
        xhr.originalElement.text(result.Message);
}
</script>


@Ajax.ActionLink("Test", "Message", "Home", null, new AjaxOptions{ OnBegin = "start", OnSuccess = "UpdateHrefText"}, new { onclick="theLink = $(this);"})


 类似资料:
  • 如何在Swift中获取的处理程序。它是在初始化时设置的,但是我没有找到任何属性来保持动作的闭包。闭包是

  • 问题内容: 假设我有这个标记: 我有这个jQuery: 单击该子项时,如何获得子项相对于其父项的索引? 例如,当您单击“步骤1”时,应弹出带有“ 0”的。 问题答案: 但是,与其为每个列表项附加一个单击处理程序,不如(在性能方面)更好地使用如下所示: 在jQuery 1.7+中,您应该使用。下面的示例将事件绑定到元素,就像委托事件一样工作:

  • 问题内容: 在Swift 1.2中,有一个Set对象,可用于创建静态类型的Set。 我无法找到如何在某个索引处获取对象。它具有,您可以执行以下操作:。 这将检索到该对象。但是现在我想从某个索引中获取一个对象。 但是,如何创建具有特定“索引”的SetIndex? 问题答案: Swift 3及更高版本 您可以从: Swift 2(已淘汰) 您可以从: Swift 1.x(已淘汰) 与相似,您必须从:

  • 我有我的python代码,在那里我使用html文件。请参阅以下代码: 这给了我一个html页面,它有一个包含两个字段的表单和一个提交按钮。我使用虚拟环境来运行这个。 现在我想在我的程序中获取字段first name和last name,这样当用户单击submit时,我想显示Hello“first name”“last name” 目的:-学习如何在python文件中提供代码时获取html元素值。

  • 问题内容: 我有一个QuerySet,让我们称之为,它是由与该问题无关的某些属性排序的。然后有一个对象,我们称它为。现在,我想尽可能 高效 地知道in中的索引。我知道我可以在Python中使用它,也可以通过将每个对象与进行比较来循环,但是执行此操作的最佳方法是什么?我正在寻找高性能,这是我唯一的标准。 __ 在Windows上将Python 2.6.2与Django 1.0.2结合使用。 问题答案

  • 在火虫中,我有一个与此内容的链接: 如何使用“类名”访问链接(单击它)? 我尝试了以下方法: 但是我得到了错误: 线程“main” org.openqa.selenium中出现异常。InvalidSelectorException:给定的选择器cb_or_somename cb_area_0219无效或不产生WebElement 发生以下错误:InvalidSelectorError:不允许使用复