Javascript Jquery-prevAll无法找到元素
我试图实现一件简单的事情:通过点击文本,它有一个类“.remove_summary”,我想得到最近的前一个文本区域的值。这个问题困扰了我整整一个晚上,我尝试了.prevAll()、.closest()和.parent()方法,但仍然得到了“未定义”的数据。 因为我的DOM有点复杂(我使用的是Django框架),所以我做了一个屏幕截图 单击带红色下划线的文本“Remove summary”后,我想获取标记的textarea的.val() 我的代码:Javascript Jquery-prevAll无法找到元素,javascript,jquery,html,Javascript,Jquery,Html,我试图实现一件简单的事情:通过点击文本,它有一个类“.remove_summary”,我想得到最近的前一个文本区域的值。这个问题困扰了我整整一个晚上,我尝试了.prevAll()、.closest()和.parent()方法,但仍然得到了“未定义”的数据。 因为我的DOM有点复杂(我使用的是Django框架),所以我做了一个屏幕截图 单击带红色下划线的文本“Remove summary”后,我想获取标记的textarea的.val() 我的代码: $(".remove_summary").cl
$(".remove_summary").click(function(){
var $txtarea = $(".remove_summary").closest('#summary').find('textarea').val();
alert($txtarea);
});
}))
另外,我不能将textarea ID放入代码中,因为我的应用程序的业务逻辑禁止它。我试图找到壁橱文本区域(同时查看“顶部”)
有人能解释一下为什么我的代码不起作用吗?您需要使用:
$(".remove_summary").click(function(){
var $txtarea = $(this).closest('#summary').find('textarea').val();
alert($txtarea);
});
或者只是:
var $txtarea = $('#summary').find('textarea').val();
因为id
是唯一的,并且在摘要中只有一个textarea
元素
您的选择器不工作,因为从关于.closest()
:
对于集合中的每个元素,获取与
通过测试元素本身并向上遍历其
DOM树中的祖先
在您的情况下,在遵循DOM树时,remove_summary
是
标记的子级,该标记是#summary
的下一个同级,因此。remove_summary
段落不是#summary
div的后代
根据你的小提琴,你可以做:
$(".remove_summary").click(function(e){
e.preventDefault();
var $txtarea = $(this).closest('b').prevAll('.summary').find('textarea').val();
alert($txtarea);
});
它不起作用,因为
删除\u summary
不是summary
的后代
您可以只使用#summary
元素,因为元素的ID是唯一的
var $txtarea = $('#summary').find('textarea').val();
从屏幕截图中的标记来看,您可以使用
$(".remove_summary").click(function(){
var _textarea = $(this).parent("#summary").find("textarea") ..
}
编辑-缺少选择器
(“#摘要”)
抱歉由于您使用的是id,您只需提及id选择器即可
$('#summary').find('textarea').val();
id
在网页中应该是唯一的,并且应该根据您的标记找到您的文本区域谢谢您的快速回复!我开始想办法了。但我的DOM将包含许多类似的div,其中包含id=“summary”和相同的“remove sumary”文本。我的问题是:当我从类为“.remove\u summary”的文本中查看DOM顶部时,如何找到最近的文本区域?我想我需要先将div的#summary id更改为class.summary,因为id必须是唯一的。那么我怎么才能找到“文本顶部最近的文本区域。删除\u摘要”呢?实际上id是唯一的,你需要使用类,然后如果你的HTML标记没有更改,你可以使用我答案中的第一个选项。我的HTML标记没有更改,但不幸的是,在使用您答案的第一个变体时,我遇到了一个未定义的错误。我的代码有点乱,但是你能看看这个JSFIDLE吗?正如我所说,我的目标是在文本的顶部找到最接近的textarea val()。删除_摘要:谢谢,但不幸的是JS区域对我来说是空的,也许我弄错了什么/非常感谢。代码终于正常工作了,谢谢您的时间和帮助:)