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

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

相关推荐
_AaronWong12 小时前
基于 Vue 3 的屏幕音频捕获实现:从原理到实践
前端·vue.js·音视频开发
孟祥_成都12 小时前
深入 Nestjs 底层概念(1):依赖注入和面向切面编程 AOP
前端·node.js·nestjs
let_code12 小时前
CopilotKit-丝滑连接agent和应用-理论篇
前端·agent·ai编程
Apifox13 小时前
Apifox 11 月更新|AI 生成测试用例能力持续升级、JSON Body 自动补全、支持为响应组件添加描述和 Header
前端·后端·测试
木易士心13 小时前
深入剖析:按下 F5 后,浏览器前端究竟发生了什么?
前端·javascript
在掘金8011013 小时前
vue3中使用medium-zoom
前端·vue.js
xump13 小时前
如何在DevTools选中调试一个实时交互才能显示的元素样式
前端·javascript·css
折翅嘀皇虫13 小时前
fastdds.type_propagation 详解
java·服务器·前端
Front_Yue13 小时前
深入探究跨域请求及其解决方案
前端·javascript
wordbaby13 小时前
React Native 进阶实战:基于 Server-Driven UI 的动态表单架构设计
前端·react native·react.js