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));
       });
    });

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

相关推荐
夜郎king9 分钟前
HTML5 SVG 实现日出日落动画与实时天气可视化
前端·html5·svg 日出日落
辰风沐阳17 分钟前
JavaScript 的宏任务和微任务
javascript
夏幻灵1 小时前
HTML5里最常用的十大标签
前端·html·html5
冰暮流星1 小时前
javascript之二重循环练习
开发语言·javascript·数据库
Mr Xu_1 小时前
Vue 3 中 watch 的使用详解:监听响应式数据变化的利器
前端·javascript·vue.js
未来龙皇小蓝1 小时前
RBAC前端架构-01:项目初始化
前端·架构
程序员agions2 小时前
2026年,微前端终于“死“了
前端·状态模式
万岳科技系统开发2 小时前
食堂采购系统源码库存扣减算法与并发控制实现详解
java·前端·数据库·算法
程序员猫哥_2 小时前
HTML 生成网页工具推荐:从手写代码到 AI 自动生成网页的进化路径
前端·人工智能·html
龙飞052 小时前
Systemd -systemctl - journalctl 速查表:服务管理 + 日志排障
linux·运维·前端·chrome·systemctl·journalctl