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

时间:2008-10-02 17:24:22

标签: asp.net jquery controls

在使用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,因为页面上的其他内容发生了变化。

4 个答案:

答案 0 :(得分:8)

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

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

答案 1 :(得分: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 :(得分:2)

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

答案 3 :(得分:2)

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