在使用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,因为页面上的其他内容发生了变化。
答案 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)
除了在性能方面更贵一点之外,我看不出使用该选择器有什么问题。毕竟;你正在获得你想要访问的控件。