2014-01-22 5 views
0

Этот код показывает предупреждение с выбранным параметром и работает хорошо!В чем разница? + Select + Option + jQuery

<script type="text/javascript"> 
    $(document).ready(function() { 
     $('select#combo').on('change', function() { 
      var valor = $(this).val(); 
      alert(valor); 
     }); 
    }); 
</script> 

<select id="combo"> 
    <option value="1">Hola</option> 
    <option value="2">Hola2</option> 
    <option value="3">Hola3</option> 
</select> 

Следующий код печатает «выбрать» на странице с помощью jQuery.
Итак, вопрос: если следующий код тот же, почему этот код не отображает предупреждение ?.

<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#result").click(function() { 
      var correos = '<select name="combo" id="combo">'; 
      correos = correos + '<option value="0" selected="selected">Seleccionaalgo</option>'; 
      correos = correos + '<option value="1">Hola</option>'; 
      correos = correos + '<option value="99">Todos</option>'; 
      correos = correos + '</select>'; 
      $("#resultado").html(correos); 
     }); 
     $('select#combo').on('change', function() { 
      var valor = $(this).val(); 
      alert(valor); 
     }); 
    }); 
</script> 

<div id="resultado"></div> 
<div id="result" style="width: 50px; height: 50px; background-color: green;">Click me!</div> 

ответ

2

Вы должны использовать event delegation для динамически создаваемых элементов:

$(document).on('change', 'select#combo' , function() { 
    var valor = $(this).val(); 
    alert(valor); 
}); 

Btw, id должен быть уникальным, вы должны использовать класс вместо этого.

+0

В этой части моего кода я положил это? – Ivan

+0

@Ivan Да, замените '$ ('select # combo'). On ('change', .......' с кодом выше – Felix

+1

tnx, что хорошо работает – Ivan