2013-07-24 48 views
2

這是更大的應用程序的一部分。
我想要做的是在中使用Jquery中的.closest提交表單時獲取文本。Jquery .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當我越來越不確定?

回答

1

.closest()穿過元素的父母(祖先),並停在第一個與您的選擇符匹配的位置。

您的<form>不是<span>標記的孩子,因此$(this).closest("span")會返回0個元素。

+0

哦,你是對的!謝謝 – zurfyx

+0

不客氣! :-) –

1

說明:對於組中的每一個元素,得到的第一個元素 通過測試元件本身和DOM樹向上遍歷 通過它的祖先選擇相匹配。

http://api.jquery.com/closest/

跨度爲同級(祖先的)不形式的祖先。

0

爲了找到closestspan你不得不做出這樣的spanform

<span> 
    <form> 
    </form> 
</span> 

家長可以達到你想要的使用你有這樣

$(document).on("submit","#theform",function(){ 
    $('.span1').html($('#input1').val()); 
    return false; 
}); 

相同的HTML FIDDLE

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