热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

确保当前的this对象准确指向预期的DOM元素

functionCheckAvailableScope(){$(input[namechkXZSYY]).each(function(
       function CheckAvailableScope() {
            $("input[name='chkXZSYY']").each(function () {
                if ($(this).attr("checked")) {
                    var inputName = $(this).attr("inputName");
                    $("select[lang='availableScope']").each(function () {
                        //var that = this;
                        alert(this);
                        PageMethods.GetOption(inputName, myculture, function (results) {
                            alert(this);
                            var option = $(this).children(results[1]);
                            if (option.length == 0) {
                                $(this).append(results[0]);
                            }
                        })

                    })

}


上段代码有两处alert(this),虽是都在.each()中的,但由于后一个this是在PageMethods的方法中,所以所指的并不是each的元素。请看下图

第一次alert(this)的结果,是each里的元素



第二次alert(this)的结果,则是window对象了




由于在PageMethods方法中,我进行了$(this).append(),但窗体无法添加内容,所以报了以下的错



是在jquery的脚本里,很难看出具体问题,所以迷茫了好一阵,网上查了很久,也调试了很久,才意识到this所指定的对象不同,PageMethods应该是窗体调用的方法,所以此时this的对象被转换了,这方面应该还能深入研究下。

方法后来改成在PageMethods外把each的this赋值给that,在PageMethods用$(that).append()可正确运行


        function CheckAvailableScope() {
            $("input[name='chkXZSYY']").each(function () {
                if ($(this).attr("checked")) {
                    var inputName = $(this).attr("inputName");
                    $("select[lang='availableScope']").each(function () {
                        var that = this; //each对象赋值给that
                        //alert(this);
                        PageMethods.GetOption(inputName, myculture, function (results) {
                            //alert(this);
                            var option = $(that).children(results[1]);
                            if (option.length == 0) {
                                $(that).append(results[0]);
                            }
                        })
                    })

}


推荐阅读
author-avatar
chunhuai
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有