仔细确认当前this对象是否是你所想指定的元素

2 篇文章 0 订阅
1 篇文章 0 订阅
       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]);
                            }
                        })
                    })

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值