【问题标题】:What is best method to find a ASP.Net control using jQuery?使用 jQuery 查找 ASP.Net 控件的最佳方法是什么?
【发布时间】:2010-09-14 21:07:16
【问题描述】:

在使用 jquery 实现我的第一个重要脚本时,我需要在页面上找到一个特定的 Web 控件。由于我使用 DotNetNuke,因此无法保证控件 ClientID,因为容器控件可能会因站点而异。我最终使用了一个属性选择器来查找以控件的服务器 ID 结尾的 ID。

$("select[id$='cboPanes']")

这似乎不是最好的方法。有没有其他方法可以做到这一点?


@Roosteronacid - 当我得到我想要的控件时,我尝试遵循给定技术/语言的习语。当我在 C# 中编程时,我会尝试以最能利用 C# 特性的方式来进行。因为这是我第一次真正使用 jQuery,而且它会被成千上万的用户使用,所以我想确保我所创建的代码对其他人来说也是一个很好的例子。

@toohool - 这肯定会工作,但不幸的是,出于性能原因,我需要将 javascript 保存在单独的文件中。如果您内联 javascript,您将无法真正很好地利用缓存,因为每个“页面”都是动态生成的。我最终会一遍又一遍地向客户端发送相同的 javascript,只是因为页面上的其他内容发生了变化。


@Roosteronacid - 当我得到我想要的控件时,我尝试遵循给定技术/语言的习语。当我在 C# 中编程时,我会尝试以最能利用 C# 特性的方式来进行。因为这是我第一次真正使用 jQuery,而且它会被成千上万的用户使用,所以我想确保我所创建的代码对其他人来说也是一个很好的例子。

@toohool - 这肯定会工作,但不幸的是,出于性能原因,我需要将 javascript 保存在单独的文件中。如果您内联 javascript,您将无法真正很好地利用缓存,因为每个“页面”都是动态生成的。我最终会一遍又一遍地向客户端发送相同的 javascript,只是因为页面上的其他内容发生了变化。

【问题讨论】:

  • +1 #1 Google for "jquery list control"

标签: asp.net jquery controls


【解决方案1】:

我过去做过的一件事(在 JavaScript 而非 jQuery 中),在上面我的 JavaScript 导入中,输出动态控件 ID 类似于 toohool 推荐的内容,并将它们分配给我在脚本导入中引用的变量。

类似这样的东西,应该允许您利用缓存并仍然使您能够拥有准确的客户端 ID:

<head>
    <script type="text/javascript>
        var cboPanesID = <%= cboPanes.ClientID %>;
    </script>

    <!-- this JS import references cboPanesID variable declared above -->
    <script src="jquery.plugin.js"></script>
</head>

【讨论】:

    【解决方案2】:

    除了在性能方面有点贵外,我看不出使用该选择器有什么问题。毕竟;您正在获得想要访问的控件。

    【讨论】:

      【解决方案3】:
      $("#<%= cboPanes.ClientID %>")
      

      这将动态注入控件的 DOM ID。当然,这意味着你的 JS 必须在 ASPX 文件中,而不是在外部 JS 文件中。

      【讨论】:

      • 是的,如果您需要页面上更多不必要的文字和更不舒服的阅读体验,那就太好了。
      【解决方案4】:

      在控件上使用标记类,并通过 jQuery 选择它。

      【讨论】:

      • 虽然这可行,但如果您是正确语义的坚持者(使用类作为类而不是标识符),那并不理想。此外,按类名选择比按 ID 选择慢得多。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-03-17
      • 2013-03-13
      • 1970-01-01
      相关资源
      最近更新 更多