它与来自JQuery的attr()无法“onclick”

时间:2015-09-05 22:27:29

标签: javascript php jquery html onclick

我正在尝试使用js JQuery中的各自函数添加“onclick”事件到我在另一个.php文件中执行的交互式表格,问题不会在我想要执行的地方执行但如果在AJAX请求中正确执行相同的指令,则会在下面的几行中显示代码:

这条指令给我的问题是:

$(td).attr("onclick","agregar_pensum_etapa2 (this,'"+subject+"','"+level+"','"+stage+"');");

这就是我想用“onclick”运行的功能

function agregar_pensum_etapa2(td,subject,level,stage){

        $(document).ready(function(){
            // Capture variables.
            var id_periodo = $("#id_periodo").val();
            var id_asignatura = subject;
            var id_nivel = level;
            var id_etapa = stage;
            var id_mencion = null;
            if (level> 3) {
               id_mencion = 0;
            }

            // Modifiable column.
            var tr = $(td).parent();
            var index_td = $(td).index();

            // First field
            var valor_anterior = $(td).text();
            $(td).html("<img src =" images / save_64.png 'width = '16' height = '16 '> & nbsp; & nbsp; & nbsp;' + '<input value = "' + valor_anterior + '" type = "text" style = "width: 40px; border: 1px solid #aaa;" onkeypress = "return soloNumeros (event);" maxlength = "2"> ');
            $(td).removeAttr("onclick");
            $(td).find("input").focus();

            // Second field

            var valor_anterior_cs = $(tr).find("td:eq("+(index_td+1)+")").text();
            var checked_cs = "";
            if (valor_anterior_cs === "X"){checked_cs = "checked"}
            $ (tr) .find ("td: eq (" + (index_td + 1) + ")") html ("<input type = 'checkbox'" + checked_cs + ">").

            // Third field

            var valor_anterior_hum = $(tr).find("td:eq("+(index_td+2)+")").text();
            var checked_hum  = "";
            if(valor_anterior_hum === "X") {checked_hum = "checked"}
            $(tr).find("td:eq("+(index_td+2)+")").html("<input type = 'checkbox'"+checked_hum+">");

           / ************************************************* *********** /


            $(td).find("img").click(function(){

                var hora_asignatura  = $(td).find("input").val();

                var mencion_cs = "NO";
                if($(tr).find("td:eq("+(index_td+1)+")").find("input").is ("checked")){mencion_cs = "YES";}

                var mencion_hum = "NO";
                if($(tr).find("td:eq("+(index_td+2)+")").find("input").is("checked")){mencion_hum = "YES";}


                if(hora_asignatura === ""){

                   if(valor_anterior != ''){

                     $(td).html(valor_anterior);      
                     $(tr).find("td:eq("+index_td+1)+")").text(valor_anterior_cs);
                     $(tr).find("td:eq("+(index_td+2)+")").text(valor_anterior_hum);
                   }else{

                     $(td).html("");
                     $(tr).find("td:eq("+(index_td+1)+")").text("");
                     $(tr).find("td:eq("+(index_td+2)+")").text("");
                   }

                   \\// --> HERE IS NOT WORKING <-- \\//
                   $(td).attr("onclick","agregar_pensum_etapa2(this,'"+subject +"','"+level+"','"+stage+"');");
                }else if(hora_asignatura == "0"){

                   if(valor_anterior! = ''){

                      $(td).html(valor_anterior);
                      $(tr).find("td:eq("+(index_td+1)+")").text (valor_anterior_cs);
                      $(tr).find("td:eq("+(index_td+2)+")").text (valor_anterior_hum);
                   }else{

                      $(td).html("<img src =" images / diagonal.png 'height = '16' style = 'width: 15px ">");
                      $(tr).find("td:eq("+(index_td+1)+")").text("");
                      $(tr).find("td:eq("+(index_td+2)+")").text("");
                   }

                   \\// --> HERE IS NOT WORKING <-- \\//
                   $(td).attr("onclick","agregar_pensum_etapa2(this,'"+subject+"','"+level+ "','"+stage+"');");
                }else{

                    $.ajax({
                        async: true,
                        cache: false,
                        dataType: "html"
                        type: 'POST'
                        url: "../Controlador/CtrlPensum.php"
                        data: {

                            id_periodo: id_periodo,
                            id_asignatura: id_asignatura,
                            id_nivel: id_nivel,
                            id_etapa: id_etapa,
                            hora_asignatura: hora_asignatura,
                            mencion_cs: mencion_cs,
                            mencion_hum: mencion_hum,
                            id_mencion: id_mencion,
                            record: "register"
                        },
                        success: function (response) {
                            //alert (response);
                            if($.trim(answer) === "1") {

                               $(td).html(hora_asignatura);

                               var marcar_cs_x = "";
                               if(mencion_cs === "SI"){marcar_cs_x = "X";}

                               var marcar_hum_x = "";
                               if(mencion_hum === "SI"){marcar_hum_x = "X";}

                               $(tr).find("td:eq("+(index_td+1)+")").html (marcar_cs_x).
                               $(tr).find("td:eq("+(index_td+2)+")").html (marcar_hum_x).

                               \\// --> HERE IT WORKS <-- \\//
                               $(td).attr("onclick", "agregar_pensum_etapa2 (this,'"+subject+"','"+level+"','"+stage+"');");
                               cargarTablaResumen ();

                            } Else {
                                alert ("Error SQL statement is not executed." + response);
                            }
                            //tr.fadeOut(500).fadeIn(500);
                        },
                        beforeSend: function () {}
                        Error: function (objXMLHttpRequest) {}
                    });
                }
            });
        });
}

我试试这个:

$(td).click(function(){
     $(td).attr("onclick","agregar_pensum_etapa2 (this,'"+subject+"','"+level+ "','"+stage+"');");
});

在html中它正确打印但不起作用,就像他不是那里的“onclick”。并且函数如果有效,我在加载页面时将onclick放到该函数中并且如果它工作,但是当我单击td并返回单击以恢复时不会恢复onclick。

2 个答案:

答案 0 :(得分:2)

为什么不再使用onclick封闭,而不是设置.click()属性?所以你的代码就像......

$(td).click(function(){
    var td = this;
    $(td).click(function () {
         agregar_pensum_etapa2(td,subject,level,stage);
    });
});

答案 1 :(得分:0)

你写的是吗?     $(文档) 而不是$(文件)与小写字母&#34; d&#34;。