0

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

阿贾克斯调用:

    $.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() { });

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

4

2 回答 2

1

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

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

引用 aclass而不是a 可能会更好id

$("body").delegate(".uiClassName", "change", function(){ 
于 2012-07-26T16:00:59.750 回答
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();
    }
});
于 2012-07-26T16:00:28.463 回答