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

15
在使用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 谷歌搜索 "jquery 列表控件" - jrcs3
4个回答

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

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

是的,如果您需要在页面上添加更多不必要的文本并获得更加不舒适的阅读体验,那就太好了。 - Piotr Kula

3

过去我曾经做过一件事情(在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

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


虽然这样可以运行,但如果你要求严格的语义(使用类作为类而不是标识符),那么这并不理想。此外,按类名选择比按 ID 选择要慢得多。 - John Sheehan

2

除了价格有点贵之外,就性能而言,我看不出使用那个选择器有什么问题。毕竟,你得到了想要访问的控件。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接