页面上有 3 个文本框和 3 个 button:
<input type="text" value="text1"/> <input type="text" value="text2"/> <input type="text" value="text3"/> <input type="button" value="button1"/> <input type="button" value="button2"/> <input type="button" value="button3"/>
先看如下代码:
//获得多个文本框框对象 var textObject = $("input[type='text']"); //获得多个button对象 var buttonObject = $("input[type='button']"); $(textObject).each(function () { alert($(this).val()); $(buttonObject).each(function () { alert($(this).val()); }) })
两个 each 中的 alert 完全一样,但是外层 each 中弹出的三个值分别为 text1,text2,text3,而内层 each 中弹出的三个值则分别对应 button1,button2,button3,那如果想在内层 each 中弹出 text1,text2,text3 该怎么办呢?如下:
//获得多个文本框框对象 var textObject = $("input[type='text']"); //获得多个button对象 var buttonObject = $("input[type='button']"); $(textObject).each(function () { //创建一个变量代替this使用,避免混淆 var target = this; //循环为对应文本框赋值 $(buttonObject).each(function () { alert($(target).val()); alert($(this).val()); }) })
工作中遇到的实际问题比较复杂,没有办法完全重现,只能写一个简单的例子,不过大致是一样的。在内层 each 中写 this,代码是无法区分这个 this 到底代表的是外层的还是内层的,所以只能当做内层来处理。因此,如果想在内层使用外层的 this,就需要创建一个变量,并把 this 赋值给它,用这个新的变量去代替 this,这样就能避免混淆。
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于