我可以通过 jQuery 中 ID 的最后一部分访问控件吗?
Can I access a control by the last portion of its ID in jQuery?
我有一个动态创建的控件,我给了它 ID "ckbxEmp"
正如我发现的 "Viewing Source," Sharepoint(或 Chrome,或 "somebody")无礼和冒昧地重新识别(并命名它,然后 "for"s 它)这个控件,赋予它威尔士风格 "ctl00_ctl24_g_1caf4ad1_092d_4224_bd10_28ab028aab50_ctl00_ckbxEmp"
所以(我想这就是原因),所有通过 jQuery 操纵 "ckbxEmp" 的尝试都失败了——也就是说,当我寻找我给它的短 ID 时,比如所以:
$(document).on("change", '#ckbxEmp', function () {
console.log('Function has been reached');
if ($(this).is(":checked")) {
alert("Checked");
} else {
alert("Not checked");
}
});
所以我可以将该代码更改为:
$(document).on("change", '#ctl00_ctl24_g_1caf4ad1_092d_4224_bd10_28ab028aab50_ctl00_ckbxEmp', function () {
console.log('Function has been reached');
if ($(this).is(":checked")) {
alert("Checked");
} else {
alert("Not checked");
}
});
...作为一次性的事情还可以,但我有许多动态创建的控件需要操作,我假设它们都会被威尔士化,这会有点痛。
-或者,希望有一种方法可以查找不精确但 "ends with" 的 ID 匹配。那可能吗?如果是这样,它的语法是什么?
注意: 这是 .
的后续
更新
奇怪的是(这开始变得很烦人),这也不管用:
$(document).on("change", '#ctl00_ctl24_g_1caf4ad1_092d_4224_bd10_28ab028aab50_ctl00_ckbxEmp', function () {
console.log('Function has been reached');
if ($(this).is(":checked")) {
alert("Checked");
} else {
alert("Not checked");
}
});
更新 2
Robert McKee 的回答,加上后续问题中的回答,已经形成了一个可行的解决方案,编码:
$(document).on("change", '[id$=ckbxEmp]', function () {
alert('Function has been reached');
if ($(this).is(":checked")) {
alert("Checked");
} else {
alert("Not checked");
}
});
"就是这个。这不是别的东西。就是这个。" - 猎鹿人
$(document).on("change", '[id$=ckbxEmp]', function () {
使用Jquery选择器
要获取所有以 "ckbxEmp" 开头的元素,您应该使用:
$(document).on("change", "[id^='ckbxEmp']", function () {
获取以"ckbxEmp"
结尾的那些
$(document).on("change", "[id$='ckbxEmp']", function () {
我有一个动态创建的控件,我给了它 ID "ckbxEmp"
正如我发现的 "Viewing Source," Sharepoint(或 Chrome,或 "somebody")无礼和冒昧地重新识别(并命名它,然后 "for"s 它)这个控件,赋予它威尔士风格 "ctl00_ctl24_g_1caf4ad1_092d_4224_bd10_28ab028aab50_ctl00_ckbxEmp"
所以(我想这就是原因),所有通过 jQuery 操纵 "ckbxEmp" 的尝试都失败了——也就是说,当我寻找我给它的短 ID 时,比如所以:
$(document).on("change", '#ckbxEmp', function () {
console.log('Function has been reached');
if ($(this).is(":checked")) {
alert("Checked");
} else {
alert("Not checked");
}
});
所以我可以将该代码更改为:
$(document).on("change", '#ctl00_ctl24_g_1caf4ad1_092d_4224_bd10_28ab028aab50_ctl00_ckbxEmp', function () {
console.log('Function has been reached');
if ($(this).is(":checked")) {
alert("Checked");
} else {
alert("Not checked");
}
});
...作为一次性的事情还可以,但我有许多动态创建的控件需要操作,我假设它们都会被威尔士化,这会有点痛。
-或者,希望有一种方法可以查找不精确但 "ends with" 的 ID 匹配。那可能吗?如果是这样,它的语法是什么?
注意: 这是
更新
奇怪的是(这开始变得很烦人),这也不管用:
$(document).on("change", '#ctl00_ctl24_g_1caf4ad1_092d_4224_bd10_28ab028aab50_ctl00_ckbxEmp', function () {
console.log('Function has been reached');
if ($(this).is(":checked")) {
alert("Checked");
} else {
alert("Not checked");
}
});
更新 2
Robert McKee 的回答,加上后续问题中的回答,已经形成了一个可行的解决方案,编码:
$(document).on("change", '[id$=ckbxEmp]', function () {
alert('Function has been reached');
if ($(this).is(":checked")) {
alert("Checked");
} else {
alert("Not checked");
}
});
"就是这个。这不是别的东西。就是这个。" - 猎鹿人
$(document).on("change", '[id$=ckbxEmp]', function () {
使用Jquery选择器
要获取所有以 "ckbxEmp" 开头的元素,您应该使用:
$(document).on("change", "[id^='ckbxEmp']", function () {
获取以"ckbxEmp"
结尾的那些$(document).on("change", "[id$='ckbxEmp']", function () {