Jquery .On 不工作,.live 工作 [重复]

Posted

技术标签:

【中文标题】Jquery .On 不工作,.live 工作 [重复]【英文标题】:Jquery .On is not working, where .live is working [duplicate] 【发布时间】:2017-03-23 17:15:01 【问题描述】:

网格标题包含所有带有复选框的列名称,最后一列是带有复选框的重新分配列。最后一列中的所有单元格都包含复选框。因此,一旦我选中标题中的复选框,该特定列中的所有复选框都会得到检查。为此,我将 jquery 与 .live 一起使用,它的工作 100% 完美。但是,如果我想使用 .On 而不是 .live 它不起作用。在这里,我保留了 jquery 代码及其库。请在这个问题上帮助我。提前致谢。

.live 的 jquery: $("# input[id*='chkHeaderRM']:checkbox").live("click", function ()

        var chkHeader = $(this);
        $("#<%=rgCaseRM.ClientID%> input[id*='chkReAssign']").each(function (index) 
            if (chkHeader.is(":checked")) 
                $("td", $(this).closest("tr")).addClass("selected");
                $(this).attr('checked', true);
                $("#<%=divRM.ClientID%>").show();
            
            else 
                $(this).attr('checked', false);
                $("td", $(this).closest("tr")).removeClass("selected");
                $("#<%=divRM.ClientID%>").hide();
            
        );
    );

$("# input[id*='chkReAssign']:checkbox").live("click", function () var grid = $(this).closest("table"); var chkHeader = $("# input[id*='chkHeaderRM']:checkbox"); if (!$(this).is(":checked")) $("td", $(this).closest("tr")).removeClass("selected"); chkHeader.removeAttr("选中"); 别的 $("td", $(this).closest("tr")).addClass("selected"); if ($("[id*=chkReAssign]", grid).length == $("[id*=chkReAssign]:checked", grid).length) chkHeader.attr("已检查", "已检查"); var checkedCheckboxes = $("# input[id*='chkReAssign']:checkbox:checked").size();

        if (checkedCheckboxes > 0) 
            $("#<%=divRM.ClientID%>").show();
        
        else 
            $("#<%=divRM.ClientID%>").hide();
        
    );

【问题讨论】:

.on() 不仅仅是.live() 的替代品,您需要为父元素添加一个选择器以附加委托侦听器,正如@Aruna 在下面指出的那样 【参考方案1】:

要将下面的“live”替换为“on”,

$('selector').live('event', func);

您必须将其更改为,

$(document).on('event', 'selector', func);

【讨论】:

以上是关于Jquery .On 不工作,.live 工作 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

jQuery中的事件绑定方法

jQuery事件绑定on()bind()live()与delegate() 方法详解

jquery bind live delegate on

浅谈Jquery中的bind()live()delegate()on()绑定事件方式

在 jQuery 中将 live() 变成 on()

jQuery中的事件方法,使用on()代替live()