2014-01-22 27 views
0

此代码显示了一个警报,并且选择了该选项并且效果很好!有什么区别? +选择+选项+ 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打印“select”。
所以,问题是:如果下一个代码是相同的,为什么这段代码不显示警报?

<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); 
}); 

顺便说一句,id应该是唯一的,你必须使用类代替。

+0

在我的代码的那一部分,我把这个? – Ivan

+0

@Ivan是的,用上面的代码 – Felix

+1

tnx代替'$('select#combo')。('change',.......' – Ivan