在javascript中选择部分ID名称

Select partial ID name in javascript

本文关键字:ID 名称 选择部 javascript      更新时间:2023-09-26

我有一个asp.net webform,我包括以下脚本(在一个单独的。js文件):

function pageLoad() {
    var mpe = $find("mpeEmpresa");
    mpe.add_shown(onShown);
    $addHandler(document, "keydown", onKeyDown);
}
function onShown() {
    var background = $find("mpeEmpresa")._backgroundElement;
    background.onclick = function() {
    $find("mpeEmpresa").hide();
    }
}
不幸的是,它不能工作,因为asp.net 3.5改变了元素的id。我能让它工作的唯一方法是使用ctl00_ContentPlaceHolder1_empresaFilha_mpeEmpresa作为ID。

当然我可以使用<%= mpeEmpresa.ClientID %>从asp.net方面,它会工作,但我将不得不传递它作为一个变量到我的外部。js文件,这不是我想要完成的。

我已经搜索了几种方法来选择它的ID名称部分元素,但无法得到他们中的任何一个工作…有保证的方法吗?

我可以在你的问题上看到JQuery标签,所以你可以很容易地使用这个:

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

据我所知,ContentPlaceHolders被渲染为div

更新:

如果你需要选择empresaFilha,所以你不能使用上面的选择器。
因为$('div[id*="mpeEmpresa"]')同时选择了ctl00_ContentPlaceHolder1_empresaFilhactl00_ContentPlaceHolder1_empresaFilha_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"]');

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