2017-01-12 7 views
0

内の各要素のクリックイベント私が持っていた:ループjQueryの

$('aside .del').click(function(){ 
    var element = $('aside .id').text(); 
    $('#id').val(element); 
    }); 

だから私は、要素のHTMLでこのごとにアクティブにしたいです。

$('aside:first-child .del').click(function(){ 
    var element = $('aside:first-child .id').text(); 
    $('#id:first-child').val(element); 
    }); 

続き; 私のHTML:

{{# each items }} 
<aside> 
<input type="checkbox" class="del" value=""/> 
ID: <div class="id">{{ this._id }}</div> 
</aside> 
{{/each}} 
</div> 

    <form action="/delete" method="post"> 
    <div class="input"> 
     {{# each items }} 
     <input style="display:none" type="text" id="id" name="id"> 
     {{/each}} 
    </div> 
    <button type="submit">DELETE</button> 
    </form> 

しかし、私は、それは簡単にそのようなハードコードではありませんします。助けてくれてありがとう。

+0

'#ID:最初-child'どんな意味がありません:) .....' id'がすべき一意にする... '#id:first-child' ==>'#id' –

+0

これは単なる例です。 :D実際には、私はこの内部の各クリックをクリックしたいと思っています。第2の例の '#id:first-child'の –

+0

は意味をなさない。 Idセレクタは各要素に固有のもので、その長さは常に1です。 – Jai

答えて

0

クリックイベントハンドラ内でthisを使用すると、クリックされた要素を参照できるため、クリックされた要素に基づいて.id要素を取得できます。

id属性の値が一意でなければ、idの代わりに同じIDを持つ2番目の要素を取得することはできません。classを使用するか、name属性で要素を取得してください。コレクションから、対応する入力要素をインデックスで取得します。


$('aside .del').click(function(){ // get the aside element where the clicked element exist // and cache it for later use var $aside = $(this).closest('aside'); // get element value within the aside var element = $aside.find('.id').text(); // get hidden input by index of aside and // update its value $('[name="id"]').eq($aside.index()).val(element); }); 

FYI:代わりにidの要素のグループのためのclass
使用する一般的。非表示の入力フィールドには type="hidden"を使用できますが。

HTML:

<input type="hidden" class="id" name="id"> 

のjQuery:

$('.id').eq($aside.index()).val(element); 
+0

で充当された構造を理解することができず、このイベントの各要素についてどう思いますか?助けてください、Plz:D –

+1

@NhatHoangVy:これは各要素で動作します....あなたのHTMLコードを共有できますか? –

+0

ええ、私は既に編集しています –