это работает:
<script>
$("input:radio").change(function () {
alert($(this).attr("name"));
});
</script>
результат: ctl00 $ ctl00 $ cphBody $ cphBody $ RS_rbtItemGroup
но это не работает:
<script>
$("input[name=ctl00$ctl00$cphBody$cphBody$RS_rbtItemGroup]:radio").change(function () {
alert($(this).attr("name"));
});
</script>
Может ли кто-нибудь мне помочь?
Поскольку у вас есть "$" в имени, вам нужно добавить одинарные кавычки в запрос имени. Попробуй это:
<html>
<head>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<script>
$(document).ready(function() {
$("input[name='ctl00$ctl00$cphBody$cphBody$RS_rbtItemGroup']:radio").change(function () {
alert($(this).attr("name"));
});
});
</script>
</head>
<body>
<input type='radio' name='ctl00$ctl00$cphBody$cphBody$RS_rbtItemGroup' value='yes'>Yes</input>
<input type='radio' name='ctl00$ctl00$cphBody$cphBody$RS_rbtItemGroup' value='no'>No</input>
</body>
</html>
API-интерфейс jQuery говорит, что атрибут равен селектору, который принимает некотированное одиночное слово или строку с кавычками. К сожалению, он рассматривает символ $
как символ без слова, поэтому вам нужно указать значение атрибута имени в кавычках:
<script>
$("input[name='ctl00$ctl00$cphBody$cphBody$RS_rbtItemGroup']:radio").change(function () {
alert($(this).attr("name"));
});
</script>
Тем не менее, я рекомендую фактически использовать конец атрибута с селектором, поскольку первая часть вашего имени генерируется.NET и может потенциально измениться, если вы измените свой макет:
<script>
$("input[name$='$RS_rbtItemGroup']:radio").change(function () {
alert($(this).attr("name"));
});
</script>
name="tl00$ctl00$cphBody$cphBody$RS_rbtItemGroup"
потому что он использует $=
вместо =
который проверяет, чем заканчивается атрибут, а не совпадает со всем атрибутом. Я считаю, что это лучший вариант, потому что .NET может добавить что-то кроме ctl00$ctl00$cphBody$cphBody$
в начало атрибута.