我有关于jquery的问题。 以下是样本:
<h3>Question 1</h3>
<input type="hidden" id="getques" value="" name="ques1">
<input type="radio" id="banswer1" name="answer1" onclick="getvalue()" value="1">
<input type="radio" id="banswer1" name="answer1" onclick="getvalue()" value="2">
<input type="radio" id="banswer1" name="answer1" onclick="getvalue()" value="3">
<h3>Question 2</h3>
<input type="hidden" id="getques" val="" name="ques2">
<input type="radio" id="banswer2" name="answer2" onclick="getvalue()" value="1">
<input type="radio" id="banswer2" name="answer2" onclick="getvalue()" value="2">
<input type="radio" id="banswer2" name="answer2" onclick="getvalue()" value="3">
现在假设我点击任何一个单选按钮..它需要调用一个函数getvalue(),它将获取前一个标题h3的文本并将其存储在隐藏字段值中。 你能给我一个解决方案吗?
我有一个脚本可以获取页面中所有标题h3的文本。相反,我只需要获取上一个标题。
注意:我使用相同的id banswer1,banswer2是有原因的......请忽略它。
答案 0 :(得分:0)
如果我了解你,你可以这样做:
<强> EDITED 强>
如@Dhaval Marthak所提到的,更接近于prev并找到下一个
function getvalue(){
//find h3
var h3 = $(this).prev('h3');
//get text
var text = h3.text();
//find hidden
var hidden = h3.next();
//set value
hidden.val(text);
}
答案 1 :(得分:0)
我建议:
$('input[type=radio"]').on(function () {
var self = $(this),
head = self.prevAll('h3:first'),
hidden = self.prevAll('input[type="hidden"]:first');
hidden.val( head.text() );
});
参考文献:
答案 2 :(得分:0)
您可以使用@ Albet代码而不是closest()
,而应使用prev()
功能。
function getvalue(){
//find h3
var h3 = $(this).prev('h3');
//get text
var text = h3.text();
//find hidden
var hidden = h3.find('input[type=hidden]');
//set value
hidden.val(text);
}
根据文件closest()
将:
通过测试元素本身并遍历其祖先来获取与选择器匹配的第一个元素。
但你真正想要的是获得你输入的第一个兄弟。
答案 3 :(得分:0)
您必须使用prevAll
$("[type='radio']").change(function ()
{
var hidden = $(this).prevAll("[type='hidden']");
var h3 = $(this).prevAll("h3");
hidden.val(h3.text());
alert(hidden.val());//Test remove in your code
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.0/jquery.min.js"></script>
<h3>Question 1</h3>
<input type="hidden" id="getques" value="" name="ques1">
<input type="radio" id="banswer1" name="answer1" value="1">
<input type="radio" id="banswer1" name="answer1" value="2">
<input type="radio" id="banswer1" name="answer1" value="3">
<h3>Question 2</h3>
<input type="hidden" id="getques" val="" name="ques2">
<input type="radio" id="banswer2" name="answer2" value="1">
<input type="radio" id="banswer2" name="answer2" value="2">
<input type="radio" id="banswer2" name="answer2" value="3">