2009-08-12 91 views
1

我有一個簡單的表單,其中包含一個列表(從數據庫生成的下拉列表),當用戶進行選擇時,所選內容將打印在屏幕上。我遇到的問題是,如果我使用jquery調用生成列表的PHP功能,當頁面加載時,列表將不起作用,但如果我直接在html中添加代碼,它將工作

當頁面加載的下拉列表被稱爲是這樣的:與ID =「所屬分類」產生使用jquery創建數據庫時生成的列表不工作

 

$('#createDropDown').ready(function(){ 
     id = $('#createDropDown').val();  
     // this calls a php function that creates a dropdown list from the DB 
     // the dropdown's id = 'categoryList' 
     xajax_addDropdownMenu(id);

});

列表,它被正確追加到createDropDown DIV稱爲「createDropDown」。直到現在,一切看起來都不錯!在進行選擇時,新創建的列表(所屬分類)另一個jQuery是稱爲

當作出選擇下面的代碼應該被稱爲上進行 問題就來了:

 

$('#categoryList').change(function() { 
    bucket_id = $('#categoryList').val();  
    var selected = ""; 
    // get selected value from the dropdown menu 
     $("#categoryList option:selected").each(function() { 
      selected += $(this).text() + " ===>"; 
     }); 
     // if we have a valid ID print it in the screen. 
     if(bucket_id!= 0) 
     { 
      xajax_addCategory(selected); 
     } 
    }); 
xajax_addCategory(選擇的);將所選項目打印在屏幕上。但沒有工作。

注意:如果我調用php函數直接在main.html文件中生成下拉列表,那麼這個工作正常,所以我知道該列表正在生成正確的ID和它的作品,但是當我使用JQuery來在加載時調用php方法,它不起作用...我不明白爲什麼。

PS我是Jquery的noob,所以一些見解將非常受歡迎!


UPDATE:

我嘗試創建是這樣生成的列表之後的結合:


$('#createDropDown').ready(function() 
    { 
     id = $('#createDropDown').val(); 
     xajax_addDropdownMenu(id); 
     $("#categoryList0").bind('change',function() 
     { 
      console.log('The code goes here!!'); 
     }); 
    }); 

其中categoryList0是新的列表的ID。班級名單是所屬分類

但我仍然堅持,因爲現在還沒有進入時,有一個變化的功能...

回答

1

你的第二個代碼片段查找匹配#categoryList,所有內容將函數綁定到更改事件。問題是當時沒有#categoryList元素,因爲你稍後創建它。因此,您需要在列表創建後進行綁定。

+0

,我該怎麼做? 如何在創建列表後創建綁定? – Onema 2009-08-12 18:24:19

+0

您需要掛鉤到xajax,並在添加列表時讓它在第二個代碼段中運行代碼。由於我不知道xajax,所以我不能告訴你如何。 – svinto 2009-08-12 18:50:32

0

我發現了一種使用xajax進行綁定的方法。出於某種原因,在jquery文件中我無法將這個函數綁定到新的下拉列表中。我的解決辦法是在addDropdownMenu添加功能可按使用xajaxResopnse- jquery的紙條> addScript(腳本)這樣

功能addDropdownMenu($ ID){

$xajaxResponse = new xajaxResponse(); 

    $html = /* CODE TO GENERATE LIST HERE */ ; 


    $javascript = /*"*///commented out " to visualize code better 
    $('#categoryList').bind('change',function categoryListChange() 
    { 
      
     //get selected value from the dropdown menu 
     var selected = ""; 
     $("#categoryList option:selected").each(function() 
     { 
     selected += $(this).text(); 
     }); 

     bucketId = $('#categoryList').val();  

     if(bucketId!= 0) 
     { 
     xajax_addCategory(selected); 
     } 

    });""; 

    $xajaxResponse->addAppend("categoryListContainer", "innerHTML", $html); 

    $xajaxResponse->addScript($javascript); 

    return $xajaxResponse; 

} 

首先做新列表綁定像這樣$( '#所屬分類')結合( '改變',功能categoryListChange(){...} 然後 加入通過$ xajaxResponse- jquery的腳本> addScript($的JavaScript);

相關問題