prev()不返回div元素

时间:2015-09-17 13:46:09

标签: javascript jquery html

我可能对此特别密集,但我无法使用prev()返回一个元素。我的基本HTML结构是:

<div>
   <table></table>
</div>
<input type="button">

当我按下按钮时,我想获得前一个元素(div元素)。为了达到这个目的,我的按钮有一个附加功能

var nearestDiv = $(this).prev();

当我在控制台中检查了nearestDiv的内容时,它似乎是某种JQuery对象而不是HTML div。我已经尝试在.prev()的末尾弹出.val(),但这又回来了。我怎样才能获得div元素?

请注意,我的按钮是动态生成的,没有任何标识它的内容。

3 个答案:

答案 0 :(得分:2)

如果您的html结构与问题中提供的相同,它肯定会返回div元素。请注意,div元素没有val()方法,您需要使用.html().text()才能获取内容。

$("input[type='button']").click(function () {
    var div = $(this).prev();
    alert(div.html());
    alert(div.text());
});

Fiddle

答案 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();