html标签移除后再添加同名标签 原事件代码不起作用

版权声明:本文为博主原创文章,需要转载尽管转载。 https://blog.csdn.net/z5976749/article/details/81981928
//$('div.divB label').on('click', function () {
        //    debugger
        //    if ( $(this).attr('style').indexOf("red") > -1)  //如果已经选过则取消选中状态
        //        $(this).css('color', 'black');
        //    else {//没选过根据是否能多选判断
        //        if (!questionObj.IsMulti)           //0是false  1是true  如果是单选则先所有label为恢复
        //            $('label').css('color', 'black');   //如果是单选的情况下所有标签都恢复原来颜色
        //        $(this).css('color', 'red');
        //    }
        //})

        //动态绑定事件 参考:https://www.cnblogs.com/timelesszhuang/p/4949167.html   用上面的click html()重写后事件不起作用
        $("body").undelegate();
        $("body").delegate("div.divB label", "click", function () {
            debugger
            if ($(this).attr('style').indexOf("red") > -1)  //如果已经选过则取消选中状态
                $(this).css('color', 'black');
            else {//没选过根据是否能多选判断
                if (!questionObj.IsMulti)           //0是false  1是true  如果是单选则先所有label为恢复
                    $('label').css('color', 'black');   //如果是单选的情况下所有标签都恢复原来颜色
                $(this).css('color', 'red');
            }
        });

事件不要加在可能被移除或替换的标签上 加在body上(我试着加在控件的父级上失败了)

原因:无论是利用getElementsByTagName还是jquery的选择器,当需要的内容还没有被插入时,选择器只会选择页面中已经存在的元素,所以事先没有存在元素是绑定不了事件的。

参考:https://www.cnblogs.com/timelesszhuang/p/4949167.html

猜你喜欢

转载自blog.csdn.net/z5976749/article/details/81981928