JQuery的$(this)在if之后会变化

javascript 复制代码
$("[name='cmbTargetAssLangs']").on('change', function () {
       var val = $(this).find("option:selected").val();
       $("#hdTargetAssLangId").val(val);
       var children = $(this).parent().next().children();
       $.each(children,function(i,item){
           if($(this).attr('href').indexOf('Translation')>0){
            var orgin = $(this).attr('href');
            orgin = orgin.toString()+'/'+val.toString();
            $(this).attr('href',orgin);
           }
       });
    });

此时用浏览器调试发现,每选择一次下拉框就会导致链接字符串变长

这是因为在Javascript中的 ( t h i s ) 调用不正确。在进入 ' i f ' 字句后, ' (this)调用不正确。在进入`if`字句后,` (this)调用不正确。在进入'if'字句后,'(this)已经不是以前的那个$(this)`了。修改代码如下。

javascript 复制代码
$("[name='cmbTargetAssLangs']").on('change', function () {
       var val = $(this).find("option:selected").val();
       $("#hdTargetAssLangId").val(val);
       var children = $(this).parent().next().children();
       $.each(children,function(i,item){
                var link = $(this).attr('href');
                var index = link.indexOf('Translation')
                if (index > 0) {
                    var endIndex = link.lastIndexOf('/');
                    link = link.substring(0, endIndex);
                    link = link + '/' + val.toString();
                    $(this).attr('href', link);
					console.log($(this).attr('href', link));
       });
    });

此时不再有链接长度变长的情况。

相关推荐
谎言西西里3 小时前
JS 高手必会:手写 new 与 instanceof
javascript
雪碧聊技术3 小时前
前端项目代码发生改变,如何重新部署到linux服务器?
前端·vue3·centos7·代码更新,重新部署
liulilittle4 小时前
C++ 浮点数封装。
linux·服务器·开发语言·前端·网络·数据库·c++
wordbaby4 小时前
Expo 进阶指南:赋予 TanStack Query “原生感知力” —— 深度解析 AppState 与 NetInfo
前端·react native
Moment4 小时前
从美团全栈化看 AI 冲击:前端转全栈,是自救还是必然 🤔🤔🤔
前端·后端·面试
天问一4 小时前
使用 Vue Router 进行路由定制和调用的示例
前端·javascript·vue.js
韩立学长6 小时前
【开题答辩实录分享】以《基于Vue的非遗文化知识分享平台的设计与实现》为例进行选题答辩实录分享
前端·javascript·vue.js
优弧6 小时前
离开舒适区100天,我后悔了吗?
前端·后端·面试
胡gh6 小时前
css的臂膀,前端动效的利器,还是布局的“隐形陷阱”?
前端·css·html
灵感菇_6 小时前
Flutter Riverpod 完整教程:从入门到实战
前端·flutter·ui·状态管理