最新下载
热门教程
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
如何正确获取被点击同名类元素的内容?
时间:2026-07-15 20:34:56 编辑:袖梨 来源:一聚教程网
在 jQuery 中,使用箭头函数绑定事件时,this 不指向触发事件的 DOM 元素,导致 $(this).text() 返回空字符串;必须改用普通函数才能正确访问当前点击元素。
在 jquery 中,使用箭头函数绑定事件时,`this` 不指向触发事件的 dom 元素,导致 `$(this).text()` 返回空字符串;必须改用普通函数才能正确访问当前点击元素。
当你为多个具有相同 class(如 .adressLine)的 <div> 绑定点击事件,并希望获取当前被点击的那个元素的文本内容时,关键在于正确理解事件处理函数中 this 的指向。
❌ 错误写法:箭头函数导致 this 失效
const adressLine = $('.adressLine');adressLine.on('click', () => { console.log('button clicked'); var text = $(this).text(); // ⚠️ 箭头函数不绑定 this,此处 this 指向外层作用域(通常是 window) console.log(text); // 输出空字符串或 undefined});
箭头函数不会创建自己的 this 上下文,而是继承自外层作用域。因此 $(this) 并非指向被点击的 .adressLine 元素,自然无法获取其内容。
✅ 正确写法:使用普通函数(function 表达式或声明)
const adressLine = $('.adressLine');adressLine.on('click', function() { // ✅ 普通函数中 this 指向当前触发事件的 DOM 元素 console.log('button clicked'); const text = $(this).text().trim(); // 推荐加 .trim() 去除首尾空白 console.log(text);});
此时 this 是原生 DOM 元素(如 <div class="adressLine">123 Main St</div>),$(this) 将其包装为 jQuery 对象,.text() 即可准确提取该单个元素的文本内容。
? 验证技巧:打印 this 和 $(this)
可在回调中加入调试语句:
console.log('Native element:', this); // 查看原生 DOM 节点console.log('jQuery object:', $(this)); // 查看 jQuery 包装对象console.log('Text content:', $(this).text()); // 获取文本
? 补充建议
- 若需同时获取数据属性(如 data-id),可用 $(this).data('id');
- 避免重复查询:如需多次操作该元素,建议缓存 const $el = $(this);;
- 确保 DOM 已就绪:将代码包裹在 $(document).ready(...) 或置于页面底部。
牢记:jQuery 事件回调中,this 的正确行为依赖于函数类型——普通函数可用,箭头函数不可用。
相关文章
- 新福建app商城积分怎么兑换 07-17
- 钉钉AI做邮件润色怎样运用参考资料 07-17
- Vegas如何制作打字机字幕效果 07-17
- 鲨鱼记账记错了怎样删除 07-17
- 《和平精英》湖心岛鱼竿怎么获得-特训岛钓鱼位置指南 07-17
- soulmate聊满8个字需要多长时间 07-17