如何从 JQuery 中动态创建的隐藏字段中获取值?
How to get value from dynamically created hidden field in JQuery?
在我的用例中,我试图从 JQuery 中动态生成的隐藏字段中获取值。当我单击该迭代的按钮时,我应该获得属于该迭代的隐藏字段的值。但我无法得到它。它给出的值为 'undefined'
HTML:
<div class="comment-list-new" style= "max-height: 660px !important;overflow-y: scroll;">
<h5>Discussion Board</h5>
<ol>
{{ if .ViewData.Questions }}
{{ range .ViewData.Questions }}
<li>
<p id="question_id" class="question_id_val" hidden>{{.QuestionId}}</p>
<div class="q-comment">
<div class="qanda questiondiv" id="questionarea" name="questionarea">
<div>
<div id="topic" class="upvote pull-left">
<a class="upvote"></a>
<span class="count">3</span>
<a class="downvote"></a>
</div>
<div >
<div class="qanda-info">
<h6><p id="quest_title">{{.QuestionTitle}}</p></h6>
</div>
<p id="quest_text">{{.QuestionText}}</p>
</div>
</div >
<div class="qanda-info">
<div class="user-info">
<img src="/resources/img/team-small-2.png" />
</div>
<h6>{{.UserId}}</h6>
<span class="date alt-font sub">{{.DateCreated}}</span>
<a id="answertext" name ="answertext" type="submit" class="link-text answerbutton">Answer</a>
</div>
</div>
</div>
</li><!--end of individual question-->
{{ end }}
{{ end }}
</ol>
</div><!--end of comments list-->
JS:
$('.questiondiv').on('click', '.submitanswerbutton', function() {
console.log("In submit button");
var question_id = $(this).closest('.question_id_val').val();
var answer_text = $('.answertext_val').val();
console.log(question_id);
console.log(answer_text);
$.getJSON("/submitanswer?question_id="+question_id+"&answer="+answer_text, function(data) {
console.log("answer Response"+data);
newQuestion = "<li><div class='q-comment'><div class='qanda' id='questionarea' name='questionarea'><div><div id='topic' class='upvote pull-left'><a class='upvote'></a><span class='count'>0</span><a class='downvote'></a></div><div ><div class='qanda-info'><h6><p id='quest_title'>"+title+"</p></h6></div><p id='quest_text'>"+desc+"</p></div></div ><div class='qanda-info'><div class='user-info'><img src='/resources/img/team-small-2.png' /></div><h6>Chip Mayer</h6><span class='date alt-font sub'>September 17 2014</span><a id='answertext' name ='answertext' type='submit' class='link-text'>Answer</a></div></div></div></li>";
$('ol').append(newQuestion);
});
});
在上面的代码中,我试图获取隐藏字段的值 question_id_val
。
谁能帮我解决这个问题?
使用closest()
获取外部容器(li)的引用,然后使用find()
方法获取隐藏字段。
var question_id = $(this).closest('li').find('.question_id_val').val();
val()
方法通常适用于输入表单字段(文本框、隐藏字段等)。因此您需要确保您的元素是页面中的有效表单字段。
<input type="hidden" id="question_id" class="question_id_val" />
或者如果您想保持 p 标签不变,请使用 html()
或 text()
方法获取 p 标签的内容。
var question_id = $(this).closest('li').find('.question_id_val').text();
请记住,这些方法 returns 所有子内容的 text/html 也是如此。所以一定要明智地使用它。
如果您知道 css 选择器 id
或 class
我不明白为什么您不能这样做:
var question_id = $('#question_id').text();
或
var question_id = $('.question_id_val').text();
val() 应该主要用于 select、textarea 和 input 元素。
要获取内部文本,请使用 html() 或 text()
var question_id = $(this).closest('.question_id_val').html();
或
var question_id = $(this).closest('.question_id_val').text();
在我的用例中,我试图从 JQuery 中动态生成的隐藏字段中获取值。当我单击该迭代的按钮时,我应该获得属于该迭代的隐藏字段的值。但我无法得到它。它给出的值为 'undefined'
HTML:
<div class="comment-list-new" style= "max-height: 660px !important;overflow-y: scroll;">
<h5>Discussion Board</h5>
<ol>
{{ if .ViewData.Questions }}
{{ range .ViewData.Questions }}
<li>
<p id="question_id" class="question_id_val" hidden>{{.QuestionId}}</p>
<div class="q-comment">
<div class="qanda questiondiv" id="questionarea" name="questionarea">
<div>
<div id="topic" class="upvote pull-left">
<a class="upvote"></a>
<span class="count">3</span>
<a class="downvote"></a>
</div>
<div >
<div class="qanda-info">
<h6><p id="quest_title">{{.QuestionTitle}}</p></h6>
</div>
<p id="quest_text">{{.QuestionText}}</p>
</div>
</div >
<div class="qanda-info">
<div class="user-info">
<img src="/resources/img/team-small-2.png" />
</div>
<h6>{{.UserId}}</h6>
<span class="date alt-font sub">{{.DateCreated}}</span>
<a id="answertext" name ="answertext" type="submit" class="link-text answerbutton">Answer</a>
</div>
</div>
</div>
</li><!--end of individual question-->
{{ end }}
{{ end }}
</ol>
</div><!--end of comments list-->
JS:
$('.questiondiv').on('click', '.submitanswerbutton', function() {
console.log("In submit button");
var question_id = $(this).closest('.question_id_val').val();
var answer_text = $('.answertext_val').val();
console.log(question_id);
console.log(answer_text);
$.getJSON("/submitanswer?question_id="+question_id+"&answer="+answer_text, function(data) {
console.log("answer Response"+data);
newQuestion = "<li><div class='q-comment'><div class='qanda' id='questionarea' name='questionarea'><div><div id='topic' class='upvote pull-left'><a class='upvote'></a><span class='count'>0</span><a class='downvote'></a></div><div ><div class='qanda-info'><h6><p id='quest_title'>"+title+"</p></h6></div><p id='quest_text'>"+desc+"</p></div></div ><div class='qanda-info'><div class='user-info'><img src='/resources/img/team-small-2.png' /></div><h6>Chip Mayer</h6><span class='date alt-font sub'>September 17 2014</span><a id='answertext' name ='answertext' type='submit' class='link-text'>Answer</a></div></div></div></li>";
$('ol').append(newQuestion);
});
});
在上面的代码中,我试图获取隐藏字段的值 question_id_val
。
谁能帮我解决这个问题?
使用closest()
获取外部容器(li)的引用,然后使用find()
方法获取隐藏字段。
var question_id = $(this).closest('li').find('.question_id_val').val();
val()
方法通常适用于输入表单字段(文本框、隐藏字段等)。因此您需要确保您的元素是页面中的有效表单字段。
<input type="hidden" id="question_id" class="question_id_val" />
或者如果您想保持 p 标签不变,请使用 html()
或 text()
方法获取 p 标签的内容。
var question_id = $(this).closest('li').find('.question_id_val').text();
请记住,这些方法 returns 所有子内容的 text/html 也是如此。所以一定要明智地使用它。
如果您知道 css 选择器 id
或 class
我不明白为什么您不能这样做:
var question_id = $('#question_id').text();
或
var question_id = $('.question_id_val').text();
val() 应该主要用于 select、textarea 和 input 元素。
要获取内部文本,请使用 html() 或 text()
var question_id = $(this).closest('.question_id_val').html();
或
var question_id = $(this).closest('.question_id_val').text();