Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/460.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery创建时,DB生成的列表不工作_Javascript_Jquery_Select_Drop Down Menu_Xajax - Fatal编程技术网

Javascript 使用jquery创建时,DB生成的列表不工作

Javascript 使用jquery创建时,DB生成的列表不工作,javascript,jquery,select,drop-down-menu,xajax,Javascript,Jquery,Select,Drop Down Menu,Xajax,我有一个简单的表单,它有一个列表(从DB生成的下拉列表),当用户进行选择时,选择将打印在屏幕上。我遇到的问题是,如果我在加载页面时使用jquery调用生成列表的php函数,列表将不起作用,但是如果我直接在html中添加代码,它将起作用 当页面加载时,下拉列表的调用方式如下: $('#createDropDown').ready(function(){ id = $('#createDropDown').val();  // this calls a php fu

我有一个简单的表单,它有一个列表(从DB生成的下拉列表),当用户进行选择时,选择将打印在屏幕上。我遇到的问题是,如果我在加载页面时使用jquery调用生成列表的php函数,列表将不起作用,但是如果我直接在html中添加代码,它将起作用

当页面加载时,下拉列表的调用方式如下:

$('#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);

});
xajax_addCategory(选中)在屏幕上打印所选项目。但它不起作用

注意:如果我调用php函数直接在main.html文件中生成下拉列表,这样就可以了,所以我知道列表是用正确的ID生成的,并且可以工作,但是当我使用Jquery在加载时调用php方法时,它就不工作了。。。我不明白为什么

PS我是Jquery的noob,所以一些见解将非常受欢迎


更新:

我尝试在列表生成后创建绑定,如下所示:

 
$('#createDropDown').ready(function()
    { 
        id = $('#createDropDown').val();  
        xajax_addDropdownMenu(id); 
        $("#categoryList0").bind('change',function() 
        { 
            console.log('The code goes here!!'); 
        }); 
    }); 
其中,categoryList0是新列表的ID。列表的类是categoryList


但是我仍然被卡住了,因为当发生更改时,它仍然没有进入函数中…

您的第二个代码片段会找到与#categoryList匹配的所有元素,并将函数绑定到更改事件。问题是当时没有#categoryList元素,因为您稍后会创建它。因此,您需要在创建列表后进行绑定。

您的第二个代码段会找到与#categoryList匹配的所有元素,并将函数绑定到更改事件。问题是当时没有#categoryList元素,因为您稍后会创建它。因此,您需要在创建列表后进行绑定。

我找到了一种稍后使用xajax进行绑定的方法。由于某种原因,jquery文件中没有任何地方可以将此函数与新的下拉列表绑定。我的解决方案是在addDropdownMenu函数中使用xajaxResopnse->addScript(script)添加jquery脚本,如下所示

函数addDropdownMenu($id){

首先像这样对新列表执行绑定(“#categoryList”)。bind('change',function categoryListChange(){…} 然后
通过$xajaxResponse->addScript($javascript);

添加jquery脚本之后,我找到了一种使用xajax进行绑定的方法。由于某些原因,jquery文件中没有任何地方可以将此函数与新的下拉列表绑定。我的解决方案是使用xajaxResponse->addScript(脚本)添加jquery脚本在添加下拉菜单中,如下所示

函数addDropdownMenu($id){

首先像这样对新列表执行绑定(“#categoryList”)。bind('change',function categoryListChange(){…}
然后
通过$xajaxResponse->addScript($javascript)添加jquery脚本

我该如何做?创建列表后如何创建绑定?您需要挂接到xajax,并在添加列表后让它在第二个代码段中运行代码。由于我不知道xajax,我无法告诉您如何做。我该如何做?创建列表后如何创建绑定?您需要挂接到xajax a在添加列表后,让它运行第二个代码段中的代码。因为我不知道xajax,所以我无法告诉您如何操作。
 
$('#createDropDown').ready(function()
    { 
        id = $('#createDropDown').val();  
        xajax_addDropdownMenu(id); 
        $("#categoryList0").bind('change',function() 
        { 
            console.log('The code goes here!!'); 
        }); 
    }); 
  $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;  

}