次の構造を持つ要素$('.sent_comment_action')
から上に移動しようとしています:.message_to_comment
<div class="replay_comment_container">
<input type="hidden" class="message_to_comment" name="message_to_comment" value="1234" />
<a class="new_comment_action" href="#">Add Comment</a>
<div class="comment_form">
<form>
<textarea class="comment_field" name="comment_body"></textarea>
<input class="sent_comment_action" type="submit" value="Send" />
<div class="error"></div>
</form>
</div>
</div>
マークアップが同じページで繰り返し可能であるという理由だけで、以下のようにコメントするメッセージの ID を取得するだけでは十分ではありません。
var message_id = $('.message_to_comment').val();
コメントさ$('.sent_comment_action')
れるメッセージのコンテキストとして、次を使用して上に移動できます。
//button in question
var message_id = button.parent().parent()... find('.message_to_comment').val();
しかし、何千ものparent()関数を持つという考えは好きではありません。だから、私のセカンドトライはclosest()
以下のような関数を使っていました:
var message_id = button.closest('.message_to_comment').val();
上記のコードをテストすると.message_to_comment
、「未定義」を返すため、要素が見つからないように見えます。したがって、parent() 関数を使用する代わりに、より良い解決策を得るために正しい方向にガイドしてください (別の方法が存在する場合)