我可能对此特别密集,但我无法使用prev()返回一个元素。我的基本HTML结构是:
<div>
<table></table>
</div>
<input type="button">
当我按下按钮时,我想获得前一个元素(div元素)。为了达到这个目的,我的按钮有一个附加功能
var nearestDiv = $(this).prev();
当我在控制台中检查了nearestDiv的内容时,它似乎是某种JQuery对象而不是HTML div。我已经尝试在.prev()的末尾弹出.val(),但这又回来了。我怎样才能获得div元素?
请注意,我的按钮是动态生成的,没有任何标识它的内容。
答案 0 :(得分:2)
如果您的html结构与问题中提供的相同,它肯定会返回div元素。请注意,div元素没有val()
方法,您需要使用.html()
或.text()
才能获取内容。
$("input[type='button']").click(function () {
var div = $(this).prev();
alert(div.html());
alert(div.text());
});
答案 1 :(得分:2)
你需要使用jquery get
函数来获取本机html对象而不是jquery包装器:
$("input").on("click",function(){
console.log("jquery wrapper:",$(this).prev());
console.log("native html div object:",$(this).prev().get(0));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div>
<table></table>
</div>
<input type="button">
答案 2 :(得分:2)
您需要为标准HTML元素提供.text()
或.html()
。所以你的代码应该是:
var nearestDiv = $(this).prev().html();
var nearestDiv = $(this).prev().text();