使用jquery on没有捕获复选框上的更改事件

时间:2014-10-21 14:48:55

标签: javascript jquery

我有一个在页面加载时从数据库加载的问题列表。我正在解析问题列表,并为每个问题添加了一个复选框。我打算将每个复选框的id添加到一个数组中,然后我将它传回数据库进行进一步处理。

$.each(data.d.crit1,function(key,value){
    var rowId = 'QID_0'+value.CLASS_QUESTION_ID;
    var codes = value.CODES ? value.CODES : '';
    $("#tblCrit1").append("<tr class='row' id='"+rowId+"'></tr>");
    $("#"+rowId).addClass('critical1').css('cursor','pointer')
        .append("<td class='chckbox'><input type='checkbox' id='cbx_Q"+value.CLASS_QUESTION_ID+"'/></td>")
        .append("<td>"+value.QUESTION_TEXT+"</td>")
        .append("<td>"+codes+"</td>");
});

我试图将一个on change事件处理程序附加到复选框,但由于某种原因,我无法触发事件。

我尝试了一些我认为应该有效的方法。类似的东西:

$("input[type=checkbox]").on('change',function(){...});

和其他一些没有运气的排列。

我显然做错了什么,但我似乎无法弄明白。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

尝试将选择器$("input[type=checkbox]")更改为$("input[type='checkbox']")

编辑:你应该有这样的东西:

$('#tblCrit1').on("click", "input[type='checkbox']", function(){...});

加载数据后附加处理程序。

答案 1 :(得分:0)

如果没有看到两个摘录的背景,很难确切地知道,但我希望

$("input[type=checkbox]").on('change',function(){...});

可以在将复选框添加到页面的方法之前运行。 on函数仅绑定到运行时页面上的元素。

我建议使用

$(document).on('change', 'input[type=checkbox]', function () {...});

将监听器附加到document,任何冒泡并匹配选择器的更改事件都会触发回调。

或者将事件监听器附加到创建它的方法中的输入,我认为这样会更整洁。