2012-03-20 96 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

你應該重視的處理程序#gll元素load()調用完成後(這實際上就像一個AJAX的異步調用):也許此刻的你加載HTML代碼之前,您已經定義了處理程序change事件,所以沒有發生,因爲選擇尚不存在。

嘗試以這種方式

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

負載的功能是在頁面的乞討改變,而平變化是在底部(有大量的HTML代碼之間)。 – Sasha 2012-03-20 14:55:22

+0

load()執行異步ajax調用。代碼的放置位置並不重要。嘗試在你附加處理器之前放置一個'console.log($('#gll').length)'它會返回'1'嗎? – fcalderan 2012-03-20 14:57:41

+0

我越來越0.這是什麼意思? – Sasha 2012-03-20 15:01:11