使用jquery获取上一个标题h3

时间:2014-10-31 12:30:41

标签: jquery html onclick

我有关于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是有原因的......请忽略它。

4 个答案:

答案 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

DEMO

$("[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">