2012-02-20 8 views
0

ボタンをクリックすると、ボタンの後の最初のテキストボックスを選択して日付を挿入する必要がある一連のボタンがあります。私の問題は、フォームが動的に生成されているため、ハードコードされたトランスバースが機能しないことです。つまり、テキストボックスがボタンの直後ではなく、その間に他の要素がある可能性があります。私はfind()を使ってみましたが、それは動作していないようです。何か案は?jQueryを使用してトランスバースしないで最初の要素を見つける方法は?

$('.required').on('click',function(){ 

     ... 

     $(this).find(".timestamp").first().val(dateStr); 

     ... 

}); 

EDIT:

$(this).parent().parent().siblings().find(".timestamp").first().val(dateStr); 

ビット近いが、上記は常にページの最初のテキストボックスの値を移入。私は、first()の代わりにclosest()を使ってみましたが、どちらもうまくいかないようです。何か案は?

答えて

1

.find()は、要素の子孫ではなく、要素の兄弟を横断。

それはあなたがより多くのような何かしたいように聞こえる:

$(this).siblings('.timestamp').first().val(dateStr); 
+0

をテキストボックスには、必ずしも常にけれども、それは例えば、親のdivに配置することができる兄弟ではありません。 – Michael

+0

すべての可能性をカバーするには、 '.siblings()'、 '.find()'、 '.closest()'の組み合わせが必要です。それは良い解決策ではありませんが、移動するときにテキストボックスの位置を追跡する方が安いでしょう。 –

+0

'$(this).parent()を使うことで、最初のテキストボックスの値のみをページに埋め込みます。私は 'first()'の代わりに 'closest()'を使ってみましたが、どちらもうまくいかないようです。何か案は? – Michael

0

使用closest()

$(this).closest(".timestamp").val(dateStr); 
0
$(this).find(".timestamp:first-child").val("SetYourVal"); 
0
$(this).find(".timestamp:first").val(dateStr); // 
関連する問題