html和php:
foreach($questions as $question)
{
?><br><textarea class="answer">Answer here...</textarea><button data-id="<?php echo $question->id;?>"class="addanswer">Post</button><?php
}
jquery的:
$(document).on('click','.addanswer',function(e)
{
e.preventDefault();
var answer=$('textarea.answer').val();
var q_id=$(this).data('id');
alert(answer);
alert(q_id);
我收到了我在textarea中输入的第一个问题的文字。对于所有其他问题,它只会在此处提醒答案...即使我得到了预期的q_id。
答案 0 :(得分:3)
这是你的问题:
var answer=$('textarea.answer').val();
这将始终为您提供jQuery遇到的第一个$('textarea.answer')
元素的值;它没有以任何方式链接到点击的按钮。
你想要点击按钮旁边的元素的值,所以使用这个html结构,你可以使用:
var answer = $(this).prev().val();
答案 1 :(得分:0)
您可以在父节点中包装每个textarea /按钮。 顺便说一句。非常脏的代码; - )
// PHP:
$template = '<div><textarea class="answer">Answer here...</textarea><button data-id="%ID%" class="addanswer">Post</button></div>';
foreach( $questions as $question )
echo str_replace( '%ID%', $question->id, $template );
// JQUERY:
$(document).on('click','.addanswer',function(e) {
e.preventDefault();
var answer=$('textarea.answer', this.parentNode).val();
var q_id=$(this).data('id');
alert(answer);
alert(q_id);
....