1

我在 html 中实现了以下李克特量表(注意最后的隐藏字段):

<ul class="likert">
    <li class="likert">Not Empathetic<input type="radio" value="1" />
    <li class="likert"><input type="radio" value="2" />
    <li class="likert"><input type="radio" value="3" />
    <li class="likert"><input type="radio" value="4" />
    <li class="likert">Very Empathetic<input type="radio" value="5" />
</ul>
<input class="answer-key" type="hidden" value="5"/>

我正在尝试将所选单选按钮的值与隐藏字段中存储的值进行比较。

在 jquery 中,我有以下内容:

$(document).ready(function(){

//click handler
$('input[type=radio]').click(function(){

    var value = $(this).val();

    //DOESN'T WORK
    var answer = $(this).parent().siblings('.answer-key').val());

    compute_score(answer,value);

    });

});

我如何访问隐藏输入的值?这个页面会有多个隐藏答案,所以我需要获取这个特定李克特量表的隐藏答案的值。我愿意将隐藏的答案移动到另一个位置(可能在<ul>?)。

4

5 回答 5

1

.parent是不够的(只选择<li>)。我想你想要.closest('ul').siblings...

于 2012-12-04T16:55:53.053 回答
0

你在这里没有得到正确的元素。您正在检查元素,而siblings('.answer-key')不是.liul

$('input[type=radio]').click(function(){
    var value = $(this).val();

    // $(this)                                  equals <input[type=radio]>
    // $(this).parent()                         equals <li class="likert">
    // $(this).parent().siblings('.answer-key') equals nothing!
    var answer = $(this).parent().siblings('.answer-key').val();
    compute_score(answer,value);
});

你需要$(this).parent().parent(),才能得到ul。然后你可以检查兄弟姐妹。所以应该这样做:

 var answer = $(this).parent().parent().siblings('.answer-key').val();
于 2012-12-04T16:56:35.803 回答
0

试试这个

var answer = $(this).closest('ul').next('.answer-key').val();

你需要先到ul .. 然后.next用来获取下一个兄弟

于 2012-12-04T16:57:21.437 回答
0

这里 parent 将选择 li 元素

$(this).parent().siblings('.answer-key').val());

改成closest("ul").siblings,得到ul对应的隐藏元素。

谢谢

于 2012-12-04T16:58:52.927 回答
0

html

<ul class="likert">
    <li class="likert">Not Empathetic <input name='radio_check' type="radio" value="1" />
    <li class="likert"><input type="radio" name='radio_check' value="2" />
    <li class="likert"><input type="radio" name='radio_check' value="3" />
    <li class="likert"><input type="radio" name='radio_check' value="4" />
    <li class="likert">Very Empathetic <input name='radio_check' type="radio" value="5" />
</ul>
<input class="answer-key" type="hidden" value="5"/>

Javascript

jQuery(document).ready(function($){

//click handler
$('input[type=radio]').on('click',function(event){

    var value = $(this).val();

//call your javascript function
    compute_score(answer, $('input[type="hidden"].answer-key').val() );
event.preventDefault();
    });
});

//以防万一您想将名称用作选择器的一部分并验证它是否已检查 is:checked 例如...我在单选选项中添加了一个名称..因为您只能选择一个,它们可以有相同的名字

于 2012-12-04T17:00:57.147 回答