它不适用于 "onclick" 来自 JQuery 的 attr ()

It does not work "onclick" with attr () from JQuery

我正在尝试将一个 "onclick" 事件及其各自的功能从 js JQuery 添加到我正在另一个 .php 中做的交互式 table td文件,问题没有在我想做的地方执行,但如果在下面几行的 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 并返回到 click to restore 时,不会恢复 onclick。

你写了吗 $(文档) 用小写字母 "d".

代替 $(document)

而不是设置 onclick 属性,为什么不再次使用闭包 .click()?所以你的代码应该是这样的...

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