【问题标题】:jquery, work on a control after finding it by idjquery,在通过 id 找到控件后对其进行处理
【发布时间】:2011-08-28 08:59:33
【问题描述】:

我用 jquery 找到了一个所需的控件,如下所示...

控制来源:

<a id="ctl00_ContentPlaceHolder1_rlvImages_ctrl0_ctrl3_lbEdit" class="lbEdit" href="javascript:__doPostBack('ctl00$ContentPlaceHolder1$rlvImages$ctrl0$ctrl3$lbEdit','')">ویرایش</a>

jquery 代码:

警报($('a[id$="lbEdit"]'));


我想知道有什么区别

ctl00_ContentPlaceHolder1_rlvImages_ctrl0_ctrl3_lbEdit

ctl00$ContentPlaceHolder1$rlvImages$ctrl0$ctrl3$lbEdit

我怎样才能得到

ctl00$ContentPlaceHolder1$rlvImages$ctrl0$ctrl3$lbEdit

使用 jquery?
意味着我需要检查上限 id 或其他条件,我认为硬编码上 id 不是正确的方法...

【问题讨论】:

  • @mcgrailm -> 你的意思是什么?
  • 我只是不明白那个 id。我想我应该庆幸我不使用 asp 在我看来 id 应该很简单
  • @mcgrailm 这是我一直对 ASP.Net Webforms 感到困惑的小问题之一。 MVC 允许您完全控制 HTML 标记的每个部分,并且是在 IMO 中工作的更好环境。

标签: javascript jquery jquery-selectors controls


【解决方案1】:

当它们是runat="server" 时,ASP.Net 使用那些复杂的命名模式来生成 html 元素 id,这使得在页面上通过 id 查找控件变得很困难。

尝试改用控件ClientID 来使用这个带有服务器标签的选择器:

$('#<%=lbEdit.ClientID %>");

【讨论】:

    【解决方案2】:

    首先,ctl00_ContentPlaceHolder1_rlvImages_ctrl0_ctrl3_lbEdit 是元素的 HTML Id 属性。

    ctl00$ContentPlaceHolder1$rlvImages$ctrl0$ctrl3$lbEdit 是元素的内部 ASP.Net 引用。它对网站的前端没有用处。

    在您的示例中,要使用 jQuery 选择器获取该元素的文本,您可以使用:

    $("#ctl00_ContentPlaceHolder1_rlvImages_ctrl0_ctrl3_lbEdit").text();
    

    还值得注意的是,使用 ASP.Net 网络表单意味着您不能永远依赖该元素的 ID。您必须通过它的类(您可以在 ASP.Net 中可靠地设置)和它的父级来查明该特定元素。

    【讨论】:

    • 亲爱的@Rory McCrossan -> 感谢您的回答 - 但 .text() 不返回 ctl00$ContentPlaceHolder1$rlvImages$ctrl0$ctrl3$lbEdit.i 想要一种获取此字符串的方法 -> 输出为那个!
    • 如果你想得到这个值(虽然我无法想象你为什么需要),那么$("#ctl00_ContentPlaceHolder1_rlvImages_ctrl0_ctrl3_lbEdit").attr("href") 会得到它。然后,您需要对其执行正则表达式替换以获取特定的控制值。
    【解决方案3】:

    使用 .NET 4.0 并将您的 ClientIDMode 设置为静态。

    http://weblogs.asp.net/asptest/archive/2009/01/06/asp-net-4-0-clientid-overview.aspx

    这将使您的 ID 更容易从 JavaScript 中引用。

    【讨论】:

      【解决方案4】:

      我认为您可能想要这样做。 javascript:__doPostBack('','')

      【讨论】:

        猜你喜欢
        • 2015-05-17
        • 1970-01-01
        • 1970-01-01
        • 2023-04-08
        • 1970-01-01
        • 2015-08-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多