2011-07-09 56 views
1

我想使用jquery獲取span元素內的textfield(只有一個)的值,但不能。jQuery的如何獲得span元素內的文本框的值

<span>simple span text 
<a class="remove" href="javascript:" title="Remove">x</a> 
<input type="hidden" name="word[ids][]" value="this is text"> 
</span> 
相關聯的定位標記的 刪除類

jQuery代碼

$(".remove").live("click", function(){ 

alert ($(this).parent().('input:text').val()); // return undefined 

//i just coded below to check whether span itself is getting or not 
alert ($(this).parent().attr('tag')); // this also return undefined 

if ($(this).parent().is('span')); 
alert("parent is span"); // only this works 

}); 
+0

哎呀....誤解了這個問題,NVM。 –

回答

3

如果input總是remove元素的下一個兄弟,那麼這將工作:

$(".remove").live("click", function(){ 
    var value = $(this).next().val(); 
}); 

解釋你爲什麼r代碼不起作用:

此行$(this).parent().('input:text').val()在語法和邏輯上都是錯誤的。

如果你想在裏面找一個又一個的元素,你必須使用find[docs]

$(this).parent().find('input:text').val() 

這仍然不會給你的價值,因爲你有一個隱藏input元素。如果你看看:text[docs] documentation,你會發現這個選擇器並沒有選擇那些。因此,無論是使用'input'還是使用:hidden[docs]'input:hidden'

.attr('tag')根本不起作用,因爲HTML元素沒有屬性標籤

$(this).parent()[0].nodeName 
+0

該問題要求隱藏輸入,而不是文本框 –

+0

@Edgar:'next()'不關心它是什麼類型的元素。另一部分實際上只是指出語法錯誤,但也許我應該澄清更多... –

+0

好吧,現在很清楚 –

0

試試這個:

$(".remove").live("click", function() { 
    alert ($(this).parent().find("input").val()); 
}); 
0

這將不起作用:您可以使用nodeName酒店需要從DOM元素獲取標籤名

$(this).parent().('input:text').val() 

相反,你需要使用find功能。另一個問題是,你正在尋找一個文本輸入的事實,但你輸入hidden類型:

$(this).parent().find('input:hidden').val() 

在一個單獨的說明,您的最終alert總會提醒,家長是否是span與否,因爲你在if聲明末尾有一個分號。

+0

感謝您提供關於隱藏字段和分號錯誤的線索,我可以考慮這種方式。您的代碼也可以使用。 – kiranking

0

有了這個:

$(".remove").live("click", function() { 
    alert ($(this).closest("span").find("input[type='hidden']").val()); 
}); 

這將找到最接近span先行者裏面,這樣會更加靈活的HTML代碼更改。

希望這會有所幫助。乾杯

+0

@ Edgar雖然我堅持Felix Kling的代碼,但我會記下您的靈活性問題。 – kiranking

0
$('.remove').live('click', 
function() { 
    console.log($(this).next('input:hidden').val()); 
}); 
2

這樣做:

$(".remove").live("click", function() { 
    //alert($(this).parent().attr('tagName')); //return the tagName 
    alert($(this).parent().find('input').val()); //this works 
}); 

測試在這裏http://jsfiddle.net/zhiyelee/29bgX/

相關問題