Jquery, как выбрать динамически создаваемый переключатель

0

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
    возможный дубликат привязки событий к динамически создаваемым элементам?
  • 0
    В вашем коде много ошибок. Не закрыты функции, не определена длина и т. Д.
Показать ещё 2 комментария
Теги:

4 ответа

1
Лучший ответ

попробуйте следующее:

$(document).on('click','#myrdb',function () {
        if ($(this).is(':checked')) {
            alert($(this).val());
        }
    });
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 для пользовательских входов, обращайтесь к ним:

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

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

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

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

Ваш триггер
$(".myrdb").click(function() { if ($(this).is(':checked')) { alert($(this).val()); } });

Дайте мне знать, как это происходит

Ещё вопросы

Сообщество Overcoder
Наверх
Меню