2012-03-20 4 views
0

に取り組んで、私はこのコードを持っている:負荷とし、機能

これをロードする
<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(); 
       } 
}); 
}); 

問題は、変化に何も起こらないということです。私は何をする必要がありますか?

答えて

1

load()呼び出しは(実際には非同期AJAX呼び出しのような役割を果たしている)が完了した後、あなたが#gll要素のハンドラを添付する必要があります:あなたはhtmlコードをロードする前に、おそらく現時点では、あなたはchangeイベントのハンドラを定義しているので、選択はまだ存在しないので何も起こりません。

を変更しようと、このように

$("#gll_select").load("<?php echo base_url() ?>form/galleries", {id : caffe}, 
    function() { 
     $("#gll").on('change',function(){ 
     ... 
    } 
}); 
+0

ロード機能は、ページの物乞いであり、かつ(HTMLコードの多くが間にあります)一番下のonchangeです。 – Sasha

+0

load()は、非同期のajax呼び出しを実行します。そのコードがどこに置かれているかは重要ではありません。ハンドラをアタッチする直前に 'console.log($( '#gll')。length)'を置くようにしてください: '1'を返しますか? – fcalderan

+0

私は0を得ていますそれはどういう意味ですか? – Sasha