有时候想要用this来一直指向当前所选取的元素,但出于其他原因,到最后可能很难使用this仍然无差错地获取到当前所选的元素。若想继续保持this的指向,可以先用一个变量来存储this当前所获取到的元素,到后面再赋值使用。这么表达可能还不太清楚,我们用代码来说话。
以上代码的主要功能是:使用Ajax,当下拉列表选取的值发生改变时,在另一个地方(这里其实是放在了一个表格的另一列)局部刷新显示下拉列表获取到的value值(本文想说明的this问题主要是圈出来的那两行代码,其他代码暂时忽略)。
很明显,complete里的函数that如果换成了常规的做法:this.parent().siblings('td[name="status"]').text(optionValue);由于增加了$.ajax({……});函数,此时的this并不是指向第一行代码中获取到的当前select元素。
解决办法:在$.ajax({……});函数外面定义一个变量,然后使用$(this)获取当前选中的select元素,最后赋值给该变量。这样就可以一直保持this的指向元素不变了。
Author:致知
Sign:路漫漫其修远兮,吾将上下而求索。