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

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

相关推荐
掘金者阿豪16 分钟前
终于!我的第二本书正式出版,吃透 Agentic AI 核心不踩坑
javascript·后端
开飞机的舒克_20 分钟前
vue3+router动态权限路由
前端·vue.js
VitoChang20 分钟前
放弃手搓路由吧!用 SolidStart 搞 SPA,真香
前端
GuWenyue21 分钟前
告别JS类型坑!Ts为什么在ai时代逐渐成为"第一"语言
前端·算法·typescript
三乐22823 分钟前
事件循环是什么东西,一篇文章带你了解
前端·javascript
wuhen_n24 分钟前
RAG 核心:向量嵌入与本地向量数据库实战
前端·langchain·ai编程
孟陬26 分钟前
国外技术周刊 #139:LLM 正在杀死程序员的「懒惰美德」
前端·人工智能·后端
lichenyang45334 分钟前
补充:Repeat 虚拟滚动与 cachedCount 到底怎么用
前端
七牛云行业应用34 分钟前
Codex CLI 和 Codex 桌面端完整教程:两种入口的功能对比与选择指南
前端·后端·github
kisshyshy36 分钟前
告别 Node 噩梦?用 Bun + TypeScript 像写诗一样调用大模型
前端·typescript