它不工作"onclick"使用attr()从JQuery

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

本文关键字:quot JQuery attr onclick 工作 使用      更新时间:2023-09-26

我试图添加一个"onclick"事件与他们各自的功能从js JQuery到一个交互式表td我在另一个。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

与其设置onclick属性,不如再次使用闭包的.click() ?所以你的代码应该是…

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

你写吗$(文档)用小写字母"d"代替$(document)