2017-10-09 122 views
0

假设我有两个测验问题。每个问题都有用于选择答案的单选按钮和用于清除答案的清晰答案按钮。 只有当答案在其各自的问题块中被选中/取消选择时,清除按钮才会隐藏/显示。如何根据是否选择最近的单选按钮来显示隐藏按钮?

如何查找选定/取消选择的单选按钮是否位于最近的问题框中并相应地显示/隐藏清除按钮?

Here,is the screenshot of the scenario I am talking about.

而且,这里是JS代码我目前使用

jQuery(function($) { 

if ($("input[type]").is(":radio")) { 
    $(".answer").append("<button type='button' name='clear' >Clear</button>"); 
} 

if ($("input[type=radio]:checked").length > 0) { 
    $('button[name=clear]').show(); 
} 
else{ 
    $('button[name=clear]').hide(); 
    } 


$("input[type=radio]").on('click', function() { 
    $nearest= $(this).closest('.answer').find('button[name=clear]'); 
    $nearest.show(); 
}); 

$('button[name=clear]').on('click', function() { 
    $(this).closest('.answer').find(':radio').prop('checked', false); 
    $(this).hide(); 
}); 

if ($('.content').parent().hasClass("deferredfeedback")) { 
    if ($('.answer .r0 input').prop('disabled')) { 
     $("button[name=clear]").remove(); 
    } 
} else { 
    if (!($('div.im-controls').length)) { 
     $("button[name=clear]").remove(); 
    } 
} 

}); 

的地方,我错过了它,我无法找出什么东西,有人可以指导我吗?

+1

你可以分享你的HTML?也许你可以使用CSS来完成。 – Walk

+0

你可以使用不同的想法做到这一点,1)你可以在一个div中有每个问题+按钮。所以,当点击按钮,你可以得到父div,并取消选中所有的单选按钮2)给单选按钮和清除按钮一个棘手的ID名称,所以当获得清除按钮ID时,你可以找到与该相关的单选按钮。 –

回答

0

为什么没有清除按钮那里隐藏

CSS

.clearButton { display:none} 

jQuery的 - 每回答假设容器具有一流的 “答案”,并
清晰的按钮有类 “clearButton”:

$(function() { 
    $(".answer").on("click","input[type=radio]",function() { 
    $(this).closest(".answer").find(".clearButton").show(); 
    }); 
}); 

或者兄弟姐妹:

$(function() { 
    $(".answer").on("click","input[type=radio]",function() { 
    $(this).siblings(".clearButton").show(); 
    }); 
}); 

对于明显可以使用

$(".answer").on("click",".clearButton",function() { 
    $(this).siblings("input[type=radio]").prop("checked",false); 
    $(this).hide(); 
    }); 

要显示清除按钮的onload如果一些无线电设备已经检查:

$("[type=radio]:checked").trigger("click") 

$(function() { 
 
    $(".answer").on("click", "input[type=radio]", function() { 
 
    $(this).closest(".answer").find(".clearButton").show(); 
 
    }); 
 

 

 
    $(".answer").on("click", ".clearButton", function() { 
 
    $(this).siblings("input[type=radio]").prop("checked", false); 
 
    $(this).hide(); 
 
    }); 
 

 

 
    $("[type=radio]:checked").trigger("click") 
 

 
});
.clearButton { 
 
    display: none 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<div class="answer"> 
 
    <label><input type="radio" name="answer1" value="1">Answer 1</label> 
 
    <label><input type="radio" name="answer1" value="2">Answer 2</label> 
 
    <label><input type="radio" name="answer1" value="3">Answer 3</label> 
 
    <button type="button" class="clearButton">Clear</button> 
 
</div> 
 
<hr/> 
 
<div class="answer"> 
 
    <label><input type="radio" name="answer2" value="1">Answer 1</label> 
 
    <label><input type="radio" name="answer2" value="2" checked>Answer 2</label> 
 
    <label><input type="radio" name="answer2" value="3">Answer 3</label> 
 
    <button type="button" class="clearButton">Clear</button> 
 
</div>

+0

嗨,感谢您的建议,但我想要保留清除按钮直到它被按下,假设我有多个页面,每个页面上有两个问题。在当前情况下,如果我移动到第二页,清除当我回到第一页时,按钮不再可见。 –

+0

请参阅更新。最后的声明进入事件处理程序 – mplungjan

+0

后的$函数对不起,但它不会触发点击 –

0

试试下面的代码

JS代码这里

jQuery(function($) { 
    $("button").hide(); 
    $("input[type='radio']:checked").each(function(e){ 
     $(this).closest('.answers').find("button").show(); 
    }); 
    $("body").on("change","input[type='radio']" ,function(){ 
    $(this).closest('.answers').find("button").show(); 
    }); 

    $("body").on("click","button" ,function(){ 
    $(this).closest('.answers').find("input[type='radio']:checked").prop("checked",false); 
    $(this).hide(); 
    }); 
}) 

click here to show jsFiddle demo

+0

不建议删除并添加DOM元素,当他们可以隐藏和显示 – mplungjan

+0

检查更新代码 –

+0

现在它看起来像我的 – mplungjan

相关问题