当我从我的服务器加载{j}的<select id="myid" >
元素时。这个选择器没有工作。但是当我把这个代码放在html中而不是通过Ajax加载时,这个选择器工作得很好......
$('#myid').change(function(){
alert('OK!');
});
<select id="myid" >
<option>1</option>
<option>2</option>
<option>3</option>
</select>
如何修复此错误?
答案 0 :(得分:13)
事件处理程序仅绑定到当前选定的元素;它们必须存在于您的代码进行事件绑定调用时的页面上。
委托事件的优势在于它们可以处理来自稍后添加到文档的后代元素的事件。
正在按照ajax加载内容。
您需要使用Event Delegation。您必须使用委托事件方法来使用.on()。
使用
$(document).on('change','#myid', function(){
alert('OK!');
});
理想情况下,您应该将document
替换为最近的静态容器。
答案 1 :(得分:0)
您还可以使用直播活动
$('#myid').live('change', function(){
alert('OK!');
});
注意:v1.9中的现场活动
答案 2 :(得分:0)
$('#myid').live('change', function(){
//and scope from $(this) here
$(this).parents().find('.class:first').attr('id');
});
看起来不错!