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

4

4 回答 4

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

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

于 2008-10-02T17:30:23.167 回答
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>
于 2008-10-03T03:22:12.963 回答
2

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

于 2008-10-02T17:28:50.003 回答
2

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

于 2008-10-02T17:33:23.737 回答