jQuery没有看到我动态加载的复选框

时间:2011-05-09 11:18:35

标签: javascript ajax jquery post

我编写了一个脚本,将一系列产品加载到div标签中。

我现在希望能够使用一系列复选框过滤这些产品。

jquery向返回XML数据集的ASP页面发布$ post。数据集的第一个元素包含这种格式的制造商列表ara | dai | sid | alp等。第二个元素包含上述代码的制造商名称。

然后我使用此脚本在div标签中构建一个复选框列表。

var mc = new Array();
mc = $("manCodes",xml).text().split(",");
var manTitles = new Array();
manTitles = $("manTitles",xml).text().split(",");

for ( var i=0, len=mc.length; i<len; ++i ){
    m += '<span><input type="checkbox" value="' + mc[i] + '" name="man[]" id="man_'+i+'" />' + manTitles[i] +'</span>'//mc[i];
    }
manufacturers = '<div id="filter" class="man">FILTER<br />' + m + '</div>';
$(".formSelect").append(manufacturers);

这是一种享受,然后在文档就绪部分我有一个代码段,可以查找复选框上的任何点击:

$(document).ready( function() { 
     $("input:checkbox").click(function() {
    loadXML($("#sortOrder option:selected").val(),$("#limitBy option:selected").val(),$("#productGroup").val());
     });
});

这是我的代码失败的地方,因为任何复选框上的任何点击都不起作用。它几乎像JQuery看不到它创建的这些复选框。

有人可以帮忙解决这个问题吗?

干杯 格雷厄姆

3 个答案:

答案 0 :(得分:1)

您需要事件委派,否则不会为动态插入/删除的元素触发事件处理程序。 .live.delegate是两种选择。

$("input:checkbox").live("click", function() {
    // implementation
});

或更好:

$("form").delegate("input:checkbox", "click", function() {
    // implementation
});

答案 1 :(得分:1)

使用jQuery.live()从动态添加的元素中捕获事件。

  

为所有人附加一个处理程序   与当前相匹配的元素   选择器,现在和将来。

 $("input:checkbox").live("click", function() {
     loadXML($("#sortOrder option:selected").val(),$("#limitBy option:selected").val(),$("#productGroup").val());
 });

答案 2 :(得分:0)

尝试:

$(document).ready( function() { 
     $("input:checkbox").live("click",function() {
    loadXML($("#sortOrder option:selected").val(),$("#limitBy   option:selected").val(),$("#productGroup").val());
     });
});