【问题标题】:How to obtain href attribute with jQuery如何使用 jQuery 获取 href 属性
【发布时间】:2011-05-26 13:31:45
【问题描述】:

我如何能够获取已被母版页修改的 asp:LinkBut​​ton 的 ID,以便我可以使用 javascript/jQuery 模拟点击?

通常,这样,我会获得 'ctl05_butSaveAssociation' 作为 '_id' 的值:

function ClickSaveButton() {
        var _id = $('a[id$="butSaveAssociation"]').attr("ID");           
        __doPostBack(_id, '');
        return false;
    }

这不起作用,因为 ID 出于某种原因再次更改,正如我们使用 FireBug 并将鼠标悬停在我们拥有的 asp:LinkBut​​ton 上看到的那样:

<a style="border-style: none; display: inline-block;" href="javascript:__doPostBack('ctl05$butSaveAssociation','')" class="CommandButton" id="ctl05_butSaveAssociation" onclick="SaveAssociation();" tabindex="0">Save</a>

所以事实上,如果我对正确的 ID 进行硬编码,它可以使用:

function ClickSaveButton() {
        var _id = "ctl05$butSaveAssociation";       // hardcoded
        __doPostBack(_id, '');
        return false;
    }

如何使用 jQuery 动态实现这一点?

【问题讨论】:

  • 您的原始代码应该可以工作...$= 应该使它选择&lt;a /&gt;s 和ids, "butSaveAssociation" 结尾,这你的控制仍然有效。您确定将代码正确复制到 StackOverflow 中吗?
  • SaveAssociation 方法在哪里?
  • 是的,我很确定。请查看顶部的第二段摘录,查看回发参数中发送的内容,注意美元符号而不是下划线!这就是问题所在……
  • SaveAssociation 在这种情况下无关紧要......
  • 不过没关系; "ctl05$butSaveAssociation" 仍然以 "butSaveAssociation" 结尾,所以 $= 应该仍然可以选择它。我一定是错过了什么,但我看不到什么......

标签: javascript jquery asp.net postback linkbutton


【解决方案1】:

虽然 HTML 生成的 id 具有 _(因为是基于 ClientID 属性生成的),但 ASP.NET 辅助方法需要 $。我真的不知道为什么它不能在所有情况下都使用下划线,但就是这样......

一个简单的事情就是使用像_id.replace("_", "$") 这样的替换。完整代码:

function ClickSaveButton() {
    var _id = $('a[id$="butSaveAssociation"]').attr("id");
    __doPostBack(_id.replace("_", "$"), '');
    return false;
}

但我在这里想...为什么你只是不调用点击事件?

function ClickSaveButton() {
    $('a[id$="butSaveAssociation"]').click();
    return false;
}

【讨论】:

  • 太棒了!这解决了问题!我没有简单地使用点击事件(这是我最初尝试过的)的原因是点击事件似乎只在客户端工作,.ascx 控件将在页面上重新加载完成更改,但尽快当您刷新页面时,更改将丢失,因为不会将任何内容保存到数据库中。这就是我考虑对服务器进行 PostBack 的原因。
【解决方案2】:

一种方法是在其周围放置一个&lt;span&gt;。像这样的:

<span id="button">
   <a style="border-style: none; display: inline-block;" href="javascript:__doPostBack('ctl05$butSaveAssociation','')" class="CommandButton" id="ctl05_butSaveAssociation" onclick="SaveAssociation();" tabindex="0">Save</a>
</span>

然后在你的 jQuery 中

var id = $('span[id="button"]').children().attr('id');

这将为您提供一种识别按钮的方法,即使它的 id 发生变化。

【讨论】:

    【解决方案3】:

    如果您使用的是 ASP.NET 4 或更高版本,则可以使用 ClientIDMode 使 ID 与您键入的 ID 保持一致:

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-01-28
      • 2019-02-14
      • 1970-01-01
      • 2016-06-07
      • 2011-06-11
      • 1970-01-01
      • 2021-11-08
      • 1970-01-01
      相关资源
      最近更新 更多