2011-07-09 20 views
1

jqueryを使用してスパン要素内にテキストフィールド(1つだけ)の値を取得したいができない。jqueryスパン要素内でテキストボックス値を取得する方法

<span>simple span text 
<a class="remove" href="javascript:" title="Remove">x</a> 
<input type="hidden" name="word[ids][]" value="this is text"> 
</span> 

inputが、これは動作しますが、常にremove要素の次の兄弟である場合にはアンカータグ

$(".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

おっと

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

テストは....疑問、NVMを誤解しました。 –

答えて

3

削除クラスに関連付けられているjQueryのコード:

$(".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要素には属性がありません。タグがあるため、単純に機能しません。

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

質問は、テキストボックスではなく、隠れた入力を要求します。 –

+0

@Edgar: 'next()'は、どのタイプの要素であるか気にしません。他の部分は実際には構文的な誤りを指摘するだけですが、多分もっと明確にしなければならないかもしれません... –

+0

これは明らかです。 –

0

:あなたはnodeNameプロパティを使用してDOM要素からタグ名を取得することができます

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

を代わりに、あなたが必要になりますfind機能を使用します。もう一つの問題は、テキスト入力を探している事実であるが、あなたの入力はタイプhiddenは次のとおりです、別のノートで

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

あなたの最終alertは常に親がspanであるかどうか、警告されますこれは、ifステートメントの最後にセミコロンがあるためです。これにより

0

これは動作しません:これは試してみてください

$(this).parent()[0].nodeName 
+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()); 
}); 
関連する問題