Если вы используете элементы управления ASP.NET, убедитесь, что вы используете свойство ClientID
элементов управления кнопки при написании JavaScript. Это избавит вас от необходимости иметь дело с искаженными идентификаторами в заполнителях контента.
Пример разметки ASP.NET в ContentPlaceHolder
:
<asp:RadioButton ID="rbnDontLimit" runat="server" />
<asp:CheckBox ID="chkWhatever" CssClass="dcDetails" runat="server" />
<asp:Label ID="lblWhatever" AssociatedControlID="chkWhatever">12 months</asp:Label>
Сгенерированный HTML:
<input id="ctl00_MainContent_rbnDontLimit" type="radio" name="ctl00$MainContent$rbnDontLimit" value="ctl00_MainContent_rbnDontLimit" />
<span class="dcDetails"><input id="ctl00_MainContent_chkWhatever" type="checkbox" name="ctl00$MainContent$chkWhatever" /></span>
<label for="ctl00_MainContent_chkWhatever" id="ctl00_MainContent_lblWhatever">12 months</label>
А для вашего JavaScript на странице:
$("#<%= rbnDontLimit.ClientID %>").click(function() {
$('.dcDetails').attr('checked', false).attr('disabled', true).each(function(){
$('label[for=' + $(this).attr('id') + ']').addClass('disabled');
});
});
// Using <%= rbnDontLimit.ClientID %> on your .aspx page will generate:
// "ctl00_MainContent_rbnDontLimit"