2016-10-10 5 views
0
<asp:ListView runat="server" ID="lsvAccessMode" ClientIDMode="Static" OnItemDataBound="lsvAccessMode_ItemDataBound"> 
    <ItemTemplate> 
     <div class="col-xs-6 col-md-4 col-xs-12"> 
      <asp:RadioButton runat="server" clientidmode="static" CssClass="customSelectBox disabled" ID="rbAccessMode" GroupName="accessMode" Enabled='<%#Convert.ToBoolean(Eval("IsSelected"))%>' /> 
      <div class="customBox disabled" id="customBox"> 
       <strong><%# Eval("Decode1") %></strong><br> 
       <img src="<%# Eval("ImagePath") %>" style="height: 80px"><br> 
       <span class="help-block"><%# Eval("Decode2") %></span> 
      </div> 
     </div> 
    </ItemTemplate> 
</asp:ListView> 

У меня есть следующий код, указанный выше. Поэтому, когда я нажимаю одну из кнопок выше, она добавит к ней класс. Но я столкнулся со следующей проблемой: я не знаю, что вставить в id часть функции $(' ').click.при нажатии кнопки asp.net в списке

Любой, кто может помочь?

+0

Какая кнопка, какой класс? – Imad

+0

содержит три переключателя, и я не уверен, что положить в скобки $ ('') .click. Обычно мы указываем имя id.ClientID, но здесь это не работает. – Hero1134

ответ

0

Почему бы не использовать класс css?

$('.customSelectBox')

например,

// attach the handler on the DOM to include all dynamically generated controls, too 
$(document).on('click', '.customSelectBox', function() { 
    // to get the one that was clicked 
    var $this = $(this); 
    // do the rest 
}); 
+0

Я пробовал. Но это не работает. – Hero1134

+0

@ Hero1134 - да, это так. отправляйте свой проблемный код, а не просто говорите: «Это не работает». – Ted

+0

Да, я это сделал. Я выполняю предупреждение («привет») для проверки. Но это не работает на моей стороне. Благодарю. – Hero1134

0

использование парциальное идентификатор, как показано ниже

$('[id*="rbAccessMode"]').click(
    function() { $(this).addClass("yourClass"); 
}); 
0

Вы не можете использовать идентификатор для назначения функции на событие щелчка по 2 причинам.

Вы используете ClientIDMode="Static", поэтому на странице будут указаны одинаковые идентификаторы с одинаковым значением.

Даже если вы удалите ClientIDMode="Static", вы все еще не в состоянии использовать идентификатор rbAccessMode, потому что он находится в контроле, который повторяет данные, rbAccessMode будут превращены в нечто вроде этого lsvAccessMode_rbAccessMode_2, чтобы гарантировать, что нет ни одного дублированных идентификаторов.

Удалите все атрибуты ClientIDMode="Static" и назначьте событие click на основе имени класса.

<script type="text/javascript"> 
     $(".customSelectBox").click(function() { 
      $(this).addClass("yourClass"); 
     }); 
    </script> 
0

Спасибо всем, мне удалось решить вопрос с вашей помощью. Благодаря предложениям Джоэла и Теда, я изменил структуру DOM моего кода. Благодаря VDWWD я удалил ClientIDMode = «Статический» и получил его работу. Ниже мой рабочий код.

$(document).on('click', '#selectorBox', function() { 
     $(this).children().addClass('active'); 
    }); 


<asp:ListView runat="server" ID="lsvAccessMode" ClientIDMode="Static" OnItemDataBound="lsvAccessMode_ItemDataBound"> 
<ItemTemplate> 
    <div id="selectorBox" class="col-xs-6 col-md-4 col-xs-12" runat="server" clientIDMode="Static"> 
     <asp:RadioButton runat="server" CssClass="customSelectBox disabled" ID="rbAccessMode" GroupName="accessMode" Enabled='<%#Convert.ToBoolean(Eval("IsSelected"))%>' /> 
      <div class="customBox disabled" id="customBox"> 
       <strong><%# Eval("Decode1") %></strong><br> 
        <img src="<%# Eval("ImagePath") %>" style="height: 80px"><br> 
         <span class="help-block"><%# Eval("Decode2") %></span> 
       </div> 
     </div> 
</ItemTemplate> 

я добавил дополнительный идентификатор родительского класса Так, вместо того, чтобы вызвать кнопки непосредственно, я назвал его родительский затем перемещаться вниз, используя метод() в .children. Еще раз спасибо. Надеюсь, мой пост может помочь людям, особенно новичкам, которые новичок в asp.net.

Смежные вопросы