Jquery 使用加载和打开功能工作
我有以下代码:Jquery 使用加载和打开功能工作,jquery,Jquery,我有以下代码: <div id="gll_select"> <script> var caffe = $("#caffe").val(); $("#gll_select").load("<?php echo base_url() ?>form/galleries", {id : caffe}); </script> </div> 将
<div id="gll_select">
<script>
var caffe = $("#caffe").val();
$("#gll_select").load("<?php echo base_url() ?>form/galleries", {id : caffe});
</script>
</div>
将加载以下内容:
<select name="gll" id="gll">
<?php foreach ($galleries as $key) : ?>
<?php if($id == $key['caffe_id']) :?>
<option value="<?php echo $key['id_gallery'] . " " . $key['name'] ?>"><?php echo $key['name'] ?></option>
<?php endif; ?>
<?php endforeach; ?>
</select>
还有这个:
$("#gll").on('change',function(){
var cff_name = $("#caffe_name").val();
var gll = $("#gll").val();
var gll = gll.split(' ');
var gll_id = gll[0];
var data = "cff_name=" + cff_name + "&gll_id=" + gll_id;
$('table tbody').empty();
$.ajax({
url: '<?php echo base_url() ?>upload/get_files',
dataType: 'json',
data : data,
success : function(data) {
var fu = $('#fileupload').data('fileupload'),
template;
fu._adjustMaxNumberOfFiles(-data.length);
template = fu._renderDownload(data)
.appendTo($('#fileupload .files'));
// Force reflow:
fu._reflow = fu._transition && template.length &&
template[0].offsetWidth;
template.addClass('in');
$('#loading').remove();
}
});
});
问题是,在变化中什么也不会发生。我需要做什么?您应该在加载调用完成后附加gll元素的处理程序,这实际上就像一个异步ajax调用:可能在加载html代码之前,您已经为变更事件定义了处理程序,因此不会发生任何事情,因为select还不存在 试着用这种方式改变
$("#gll_select").load("<?php echo base_url() ?>form/galleries", {id : caffe},
function() {
$("#gll").on('change',function(){
...
}
});
load函数位于页面的最下方,onchange位于页面底部,中间有大量HTML代码。load执行异步ajax调用。代码放在哪里并不重要。尝试在附加处理程序之前放置一个console.log$'gll.length:它是否返回1?我得到0。这是什么意思?这正是我所说的:当您附加事件处理程序时,元素仍然不存在,因为load异步获取html。在您从服务器获得答案之前,可能要经过大约十分之一秒的时间。因此,在加载完成后,必须将处理程序附加到回调中