使用jQuery查找ASP.Net控件的最佳方法是什么?

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

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

这似乎可能不是最好的方法。 还有另一种方法吗?


@Roosteronacid – 当我得到我想要的控件时,我会尝试遵循给定技术/语言的习语。 当我使用C#编程时,我尝试以最佳利用C#function的方式进行编程。 由于这是我第一次真正使用jQuery,因为这将被成千上万的用户使用,我想确保我创建的代码也是其他人的一个很好的例子。

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


@Roosteronacid – 当我得到我想要的控件时,我会尝试遵循给定技术/语言的习语。 当我使用C#编程时,我尝试以最佳利用C#function的方式进行编程。 由于这是我第一次真正使用jQuery,因为这将被成千上万的用户使用,我想确保我创建的代码也是其他人的一个很好的例子。

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

 $("#<%= cboPanes.ClientID %>") 

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

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

这样的事情应该允许您利用缓存并仍然使您拥有确切的客户端ID:

    

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

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