2015-09-17 68 views
1

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

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

当我按下按钮时,我想获取上一个元素(div元素)。要做到这一点我的按钮连接到它与

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

一种功能,当我检查nearestDiv的内容,这似乎是某种jQuery对象,而不是一个HTML DIV控制台。我已经尝试在.prev()结尾处弹出.val(),但是这回来是空的。我如何获得div元素?

请注意,我的按钮是即时生成的,没有任何标识它的东西。

+5

创建此 –

+0

P/S小提琴:'.VAL()'链接到.prev的'结束()'将无法工作,因为选择已经转移到了之前的元素,并且不再位于输入元素处。除输入之外没有其他元素具有“值”。 – Terry

+0

当您使用$(this)时,请考虑您为该函数使用的jQuery选择器。它是否正确选择?如果是这样,那么$(this)将起作用。 – Worldgorger

回答

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">

+1

把.get(0)在prev()返回的HTML div我后 - 谢谢你! – Novastorm

2

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

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

Fiddle

2

你需要给.text()或标准HTML元素的.html()。所以,你的代码应该是:

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