2014-11-30 2 views
0

JQuery как выбрать динамически созданный переключатель. У меня естьJQuery как выбрать динамически созданный переключатель

<div id="rDataR"> 
</div> 

МОЙ JAVASCRIPT

<script> 
    $(function() { 
    var items="<p>"; 

    for (var i = 0; i < length; i++) { 

     items+="<input type='radio' id='myrdb' value='"+i+"'/>" 

    } 
    items+="</p>" 
    $("#rDataR").html(items); 

    } 
    </script> 

Я стараюсь, но не работает

$('#myrdb').click(function() { 
      if ($(this).is(':checked')) { 
       alert($(this).val()); 
      } 
     }); 
+1

возможный дубликат [связывания событий на динамически создаваемые элементы?] (Http://stackoverflow.com/questions/203198/event-binding-on-dynamically-created-elements) – JJJ

+0

Там в вашем коде много ошибок. Не закрыта функция правильно, не определена длина и т. Д. –

+0

Я забыл закрыть функцию. – edpa92

ответ

1

попробовать, как следующее:

$(document).on('click','#myrdb',function() { 
     if ($(this).is(':checked')) { 
      alert($(this).val()); 
     } 
    }); 
0

Вместо использования дубликата класса использовать идентификатор для пользовательских входовзатем получить доступ к ним:

$(function(){ 
$('.myrdb').filter(':checked').click(function(){alert('I am checked')}) 
}); 
0

Вы должны изменить динамически добавляемые HTML для

items+="<input type='radio' class='myrdb' value='"+i+"'/>" 

Поскольку согласно конвенции dom id's должно быть уникальным.

И обработчик события JQuery быть как:

$(document).on('click','.myrdb',function() { 
    if ($(this).is(':checked')) { 
    alert($(this).val()); 
    } 
}); 
0

Вы логика верна. Вы просто пропустили какие-то терминальные двоеточия здесь и там, и у вас была одна маленькая случайная опечатка, и вы не определили свою длину. Я также изменил ваши радиоэлементы, чтобы использовать класс вместо id, чтобы они могли быть однозначно идентифицированы последовательно. Изменения теперь следующим образом:

Ваш HTML:
<div id="rDataR"></div>

Ваш JavaScript
<script> $(function() { var items = "<p>"; var length = 10; //added length for (var i = 0; i < length; i++) { items += "<input type='radio' class='myrdb' value='" + i + "'/>"; } items += "</p>"; $("#rDataR").html(items); //corrected the typo #rDataE }); </script>

Ваш Trigger
$(".myrdb").click(function() { if ($(this).is(':checked')) { alert($(this).val()); } });

Дайте мне знать, как она идет

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