在javascript中选择部分ID名称

在javascript中选择部分ID名称,javascript,jquery,asp.net,Javascript,Jquery,Asp.net,我有一个asp.net Web表单,其中包含以下脚本(在单独的.js文件中): 不幸的是,它无法工作,因为asp.NET3.5更改了元素id。我能让它工作的唯一方法是使用ctl00\u contentplaceholder 1\u empresaFilha\u mpeEmpresa作为ID 当然,我可以从asp.net端使用,它可以工作,但我必须将其作为var传递到我的外部.js文件,而这并不是我想要实现的 我已经搜索了一些方法来部分地根据元素的ID名称来选择元素,但是没有任何一种方法可以工作。

我有一个asp.net Web表单,其中包含以下脚本(在单独的.js文件中):

不幸的是,它无法工作,因为asp.NET3.5更改了元素id。我能让它工作的唯一方法是使用
ctl00\u contentplaceholder 1\u empresaFilha\u mpeEmpresa
作为ID

当然,我可以从asp.net端使用
,它可以工作,但我必须将其作为var传递到我的外部.js文件,而这并不是我想要实现的


我已经搜索了一些方法来部分地根据元素的ID名称来选择元素,但是没有任何一种方法可以工作。。。有保证的方法吗?

我可以在您的问题上看到JQuery标记,因此您可以轻松使用:

$('div[id*="mpeEmpresa"]')
据我所知,
contentplaceholder
呈现为
div

更新:

如果您也需要选择
empresaFilha
,则无法使用上述选择器。
因为
$('div[id*=“mpeEmpresa”]”)
选择
ctl00\u contentplaceholder 1\u empresaFilha
ctl00\u contentplaceholder 1\u empresaFilha\u mpeEmpresa

所以你需要使用这个:

$('div[id*="mpeEmpresa"]')
仅选择
mpeEmpresa

$('div[id*="mpeEmpresa"]').css("background-color","blue");
仅选择
empresaFilha

$('div[id*="mpeEmpresa"]').parent('div[id*="empresaFilha"]').css("background-color","red");

或者类似的事情,可能这段代码没有优化,因为我看不到您的ASP代码或呈现的HTML,所以必须提供一个通用的解决方案。

您可以简单地使用它

var mpe=$('div[id$="mpeEmpresa"]');


我的一个老答案可能在这里有所帮助
*=
在选择器中意味着“包含”向元素添加
ClientIDMode=“Static”
,以保留原始id。$find('[id$=“mpeEmpresa”]')以选择器结尾可以帮助您,正如@NawedKhan所说的,如果您在单独的js文件中使用选择器,css类选择器应该是最好的方法,我避免使用类选择器解决方案,因为我觉得它不是很优雅。不幸的是,出于某种奇怪的原因,这两种方法都不适用于我,也不适用于
$find('[id$=“mpeEmpresa”]')
。捕获
\uuu
可能更可靠
$('div[id*=“\u mpeEmpresa”]”)实际上,mpeEmpresa是一个
ModalPopupExtender
。您的解决方案将只应用于模态的背景,因此不会隐藏模态的面板本身。。。除非我也将隐藏应用于“pnlEmpresa”(mpe适用的面板)。不知道为什么。您可以通过在浏览器的源代码中搜索
mpeEmpresa
轻松找到它,不是吗?但是关于隐藏,这不是soulution的问题,可能你的模态是这样呈现的:当你使用JS隐藏内部元素时,外部容器仍然存在。实际上,我在渲染模态窗口的源代码中找不到它。此外,我只能在执行
hide()
的行中使用
$('div[id*=“mpeEmpresa”])
(和/或
$('div[id*=“pnlEmpresa”])
)。尝试在VAR(每个函数的第一行)上使用它们中的任何一个都不起作用。请尝试此
$find($('div[id*=“mpeEmpresa”]”)。attr('id'))
,并告诉我结果。
 var mpe=$find('div[id$="mpeEmpresa"]');