2014-06-21 49 views
-1

我有滤波器,这是越来越数据库中通过ajax创建为每enteries producttypes:追加jQuery的工作,但的onclick不工作

HTML部分:

<ul id="foodtype"></ul> 

Ajax代码显示过滤器:

function showtypes(){ 
     $.ajax({ 
      type: "POST", 
      url: "ajax/incl/showtype", 
      data:'', 
      dataType : 'json', 
      cache: false, 
      success: function(records1){ 
       $('#foodtype').html(makefoodType(records1)); 
      } 
     }); 
     } 

     function makefoodType(data1){ 
      var tbl_body = ""; 
      $.each(data1, function() { 
       var tbl_row = "", 
        currRecord = this; 
       $.each(this, function(k1 , v1) { 
      tbl_row += "<li><input type=checkbox id="+v1+" name="+v1+" /> 
         <span style=font-size:14px>"+v1+"</span></li>"; 
       }) 
       tbl_body += tbl_row; 
      }) 

     return tbl_body; 
     } 

这些类别得到正确显示,但是当我选择复选框,然后下面的代码需要执行

function getFilterOptions(){ 
    var opts = [d,de]; 
    $checkboxes.each(function(){ 
    if(this.checked){ 
     opts.push(this.id); 
    } 
    return opts; 
    } 

    var $checkboxes = $("input:checkbox"); 
    $checkboxes.on("change", function(){ 
    var opts = getFilterOptions(); 
    updateProducts(opts); 

    }); 

我希望复选框的ID被推送到具有php代码的页面。但是在检查复选框时没有任何事情发生。 注:当我查看源代码,然后<ul id="foodtype"></ul>代码后,你仍然INACT。没有<li>元素显示:(

+0

这不是重复..为什么投票.. pl尝试获得我在这里尝试的逻辑 – Gags

回答

0

你需要使用一些所谓的事件委托监听的容器上的点击事件,其中的复选框是如此。添加这些动态,点击事件将得到冒泡到容器中。

0

这是因为var $checkboxes = $("input:checkbox");是越来越执行前阿贾克斯完成,因此没有元素。

更改为

$(document).on("change", "input:checkbox", function() { 
    var opts = getFilterOptions(); 
    updateProducts(opts); 
}); 

它应该工作。

+0

我已经试过这个,现在ajax调用被解雇了,但没有ID被添加到Ajax req :( – Gags

+0

@ Gags,没有得到你......你的ajax调用有'data:'''你如何期待ID被传递? –

+0

我得到了它的工作..我做复选框单击'完成'功能的ajax,它现在工作.. 谢谢 – Gags