这是更大的应用程序的一部分
我想要做的是在Jquery中使用span1
提交表单时获取.closest
中的文本。
span1 = $(this).closest("span").html()
的结果虽然未定义。
HTML
<span class="span1">
texthere
</span>
<div>
<div class="whatever">
<form id="theform" action="#" method="POST">
<input type="text" name="input1" />
</form>
</div>
</div>
Jquery的
$(document).on("submit","#theform",function(){
span1 = $(this).closest("span").html();
input1 = $(this).find("input").val();
alert(span1+" - "+input1);
return false;
});
为什么我在阅读.closest
.span1
?
答案 0 :(得分:1)
.closest()
遍历元素的父级(祖先),并在第一个与选择器匹配的位置停止。
您的<form>
不是<span>
代码的子代,因此$(this).closest("span")
会返回0个元素。
答案 1 :(得分:1)
描述:对于集合中的每个元素,获取第一个元素 通过测试元素本身并遍历来匹配选择器 通过DOM树中的祖先。
http://api.jquery.com/closest/
跨度是(祖先)的兄弟,而不是形式的祖先。
答案 2 :(得分:0)
要找到closest
span
,您必须span
form
<span>
<form>
</form>
</span>
您可以使用与此相同的html实现您想要的目标
$(document).on("submit","#theform",function(){
$('.span1').html($('#input1').val());
return false;
});
答案 3 :(得分:0)
span1 = $(this).parents().filter(function () {
return $(this).siblings('.span1').length
}).first().siblings('.span1').html();