Jquery .closest未定义

时间:2013-07-24 15:12:33

标签: jquery

这是更大的应用程序的一部分 我想要做的是在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;
});

JSFFIDLE

为什么我在阅读.closest .span1

时未定义

4 个答案:

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

FIDDLE

答案 3 :(得分:0)

span1 = $(this).parents().filter(function () {
    return $(this).siblings('.span1').length
}).first().siblings('.span1').html();