点击input获取前一个td内容报错:TypeError: $(...).closest(...).previous is not a function
问题解答
你遇到的错误不是closest()的问题——closest()确实是jQuery的可用函数,错误出在你调用的previous()方法上:jQuery里并没有这个方法,获取前一个同级元素的正确方法是prev()。
修正后的代码
把previous()换成prev()就可以正常获取到"My Text"了:
function myFunc(obj){ console.debug($(obj).closest('td').prev('td').text()); }
额外优化建议
因为你的obj(也就是input元素)本身就在目标<td>里面,你也可以用parent()代替closest('td'),代码会更简洁:
function myFunc(obj){ console.debug($(obj).parent().prev('td').text()); }
补充说明
closest('selector')的作用是从当前元素开始向上遍历DOM树,找到第一个匹配选择器的祖先元素,这里用来定位input所在的td完全没问题。prev('selector')则是获取当前元素的前一个同级兄弟元素,正好对应你需要的左侧td,这才是jQuery中实现你需求的正确方法。
内容的提问来源于stack exchange,提问作者Max Boy
相关产品推荐
相关产品推荐

