如何跳过div?

时间:2012-10-28 01:22:24

标签: javascript jquery jquery-mobile

我正在进行移动html5 / jquery测验我预加载 然后,从服务器到一个html文件的所有问题 有按钮在问题之间来回移动。 效果很好,但现在我需要跳过某些问题 如果该人通过无线电是/否输入回答“否” 问题20,然后是21和22,不需要显示 我怎样才能做到这一点?这是我一直在使用的代码片段:

JSFIDDLE:

http://jsfiddle.net/gN9Xg/

如果问题1的人回答“否”,则想跳过问题2

    function doSubmit(obj)
    {
        $(obj).parents(".question").first().next().show();
        $(obj).parents(".question").first().hide();
    }


<div class="question" id="question11" >

<input type="text" name="question11.1" qid="question11" />


<input type=submit id="button"    value="Submit" onclick='doSubmit(this)' />

2 个答案:

答案 0 :(得分:0)

每个答案都需要一些指示,说明在选择时该怎么做。在应该跳过的答案上加上data-next属性,并将属性值设置为下一个所需问题的ID。

现在,当选择了答案时,请检查其data-next属性,如果存在,则将下一个问题设置为所选的ID,否则按照您现在的步骤进行操作。

备份还需要进行一些更改。您需要跳过,直到找到style.display为非'none'的问题。

基本思路是使用显示样式设置来指出要回答的问题以及答案的data-next属性,以选择要回答的问题。

希望允许你继续。

答案 1 :(得分:0)

要通过尽可能少的HTML更改来实现此类功能,您可以设置一个类,例如对于将导致此类跳过的元素,“skipper”,则元素值将是一个数字,用于确定要跳过的问题数。

例如,要让答案为“否”导致跳过,请使用这样的HTML:

<select name="question1.1" class="skipper">
    <option  name="question1.1" ano="1" qid="question1" value="0" checked/>Yes
    <option  name="question1.1" ano="1" qid="question1" value="1"  />No
</select>

由于你并没有在其他地方使用这个值,所以应该没问题。

现在使用它,改为使用这样的代码:

function doSubmit(obj)
 {
    var oQuestion = $(obj).parents(".question").first();
    var skipCount = parseInt(oQuestion.find(".skipper").val(), 10);
    if (isNaN(skipCount) || skipCount < 0)
        skipCount = 0;
    var oNext = oQuestion.next();
    for (var i = 0; i < skipCount; i++)
        oNext = oNext.next();
    oNext.data("prev_index", oQuestion.index());
    oNext.show();
    oQuestion.hide();
}

function backToPrev(obj)
{
    var oQuestion = $(obj).parents(".question").first();
    var index = parseInt(oQuestion.data("prev_index"), 10);
    if (isNaN(index) || index < 0)
        oQuestion.prev().show();
    else
        $(".question").eq(index).show();
    oQuestion.hide();
}

如您所见,代码会查找“skipper”值,并指定要返回的问题的索引。

Updated fiddle