Jquery .change()事件问题

时间:2012-07-26 15:52:19

标签: php jquery events checkbox

执行ajax调用后,我有2个复选框。当我尝试引用它们的id来执行.change()事件时,事件不会触发。有任何想法吗?这是我的代码:

Ajax电话:

    $.ajax({                        
    url:"../includes/MC.Admin.ajax.php",
    type: "POST",
    data: empupdatedata,
    success: function(empupdate) {              
    var empupdateJson = $.parseJSON(empupdate);

                  $("#empupdateinfo_tbl").html(empupdateJson.updateempinfo);

                $("#empemploymentupdateinfo_tbl").html(empupdateJson.updateempemploymentinfo);


                $('#employee-update').bPopup({
                    modalClose: false
                });

                }
        });

这是构造文本框的地方:

if($rm5->isbonus == 1 && $rm5->isallowance == 0)
{
    $updateemployeeemploymentinfo .= "<tr><td class = 'tbl_data'>
    Additional Payment</td><td>Bonus <input type = 'checkbox' 
    name = 'isbonus' id = 'uisbonus'> Allowance <input type = 'checkbox' 
    name = 'isallowanece' id = 'uisallowance'></td></tr><tr></tr>"; 
}

我想使用这两个复选框的id来使用以下代码触发更改事件:

$("#uisbonus").change(function(){
    if($(this).attr("checked"))
    {
        $('#uamountcon').append("<td id = 'uamountcon'><input type = 'text' id = 'uamount ></td>")

    }
    else
    {
         $('#uamountcon').html();
    }
});

$("#uisallowance").change(function(){
    if($(this).attr("checked"))
    {
        $('#uamountcon').append("<td id = 'uamountcon'><input type = 'text' id = 'uamount ></td>")
    }
    else
    {
         $('#uamountcon').html();
    }
});//I placed this code insidethe $(document).ready(function() { });

更改事件的位置是否错误?我应该把活动放在哪里?或者问题是什么?谢谢!

2 个答案:

答案 0 :(得分:1)

由于您在页面加载后添加它们,因此必须使用on()delegate()进行事件委派。在{1.7}中添加了on(),但对于先前版本delegate()是使用事件委派的最有效方法。

$("body").delegate("#uisbonus", "change", function(){ 
...
$("body").delegate("#uisallowance", "change", function(){ 

最好引用class而不是id

$("body").delegate(".uiClassName", "change", function(){ 

答案 1 :(得分:0)

事件委派将是最简单的修复,

$(document).delegate("#uisbonus","change",function(){
    if($(this).attr("checked"))
    {
        $('#uamountcon').append("<td id = 'uamountcon'><input type = 'text' id = 'uamount ></td>")

    }
    else
    {
         $('#uamountcon').html();
    }
});

$(document).delegate("#uisallowance","change",function(){
    if($(this).attr("checked"))
    {
        $('#uamountcon').append("<td id = 'uamountcon'><input type = 'text' id = 'uamount ></td>")
    }
    else
    {
         $('#uamountcon').html();
    }
});