单击后停用部分页面
Deactivate part of page on click
我正在尝试创建一个Buzzfeed风格的测验。当用户点击答案时,有没有办法停用页面的一部分,这样用户就不能再点击同一问题的替代选项,从而扭曲测试的最终分数。
我在这里和这里找到了一些类似的主题,但我不想添加覆盖,而且我的代码中没有使用输入,所以我想知道是否有其他途径。
我在这里创建了一个代码笔http://codepen.io/kkoutoup/pen/ByGEoQ
$(document).ready(function(){
//create an array to store correct answers
var totalCorrect = [];
$('li').click(function(){
//caching variables
var $parent = $(this).parent();
var $span = $(this).find('.fa');
//check for .correct class
//if yes
if($(this).hasClass('correct')){
//add .correctAnswer class
$(this).addClass('correctAnswer');
//find next span and change icon
$span.removeClass('fa fa-square-o').addClass('fa fa-check-square-o');
//reduce opacity of siblings
$(this).siblings().addClass('fade');
//show answerText
var $answerReveal= $parent.next('.answerReveal').show();
var $toShowCorrect = $answerReveal.find('.quizzAnswerC');
var $toShowFalse = $answerReveal.find('.quizzAnswerF');
$toShowCorrect.show();
$toShowFalse.remove();
//add 1 to total correct array
totalCorrect+=1;
//get array's length
var $finalScore = totalCorrect.length;
console.log($finalScore);
}else{
//add .wrongAnswer class
$(this).addClass('wrongAnswer').addClass('fade');
//change icon
$span.removeClass('fa fa-square-o').addClass('fa fa-check-square-o');
//reduce opacity of its siblings
$(this).siblings().addClass('fade');
//show wrong Message
var $answerReveal= $parent.next('.answerReveal').show();
var $toShowCorrect = $answerReveal.find('.quizzAnswerC');
var $toShowFalse = $answerReveal.find('.quizzAnswerF');
$toShowCorrect.remove();
$toShowFalse.show();
//locate correct and add respective class
$parent.find('.correct').addClass('correctAnswer');
};
});
});//end dom ready
有什么想法吗?
感谢
我们要做的是从所选选项集的click event
中删除click function
——在本例中,是元素parent
的所有children
。因此,当用户再次尝试click
时,click function
将不会在click event
上被调用。
在click function
中添加以下行,因为我们希望在上单击任何选项后立即触发禁用
$(this).parent().find('li').off("click");
这是最新的代码笔
请注意一件事——.off('click')
从元素中删除所有类型为click
的事件侦听器。如果只想删除此函数,请将function
分配给variable
,然后在on
和off
调用中使用variable
。如下所示:
event_fce = function(event) {
//do stuff here
$(this).off('click', event_fce);
}
$('li').on('click', event_fce);
一旦选择了一个选项(正确/错误),就可以关闭click
,如下所示:
Codepen更新
$(this).siblings().off("click"); //add this to where appropriate, such as either in `if` or `else` or both.
相关文章:
- 如何使用skip参数使用angular ui引导进行服务器端分页
- 如何通过引用var Using DataTables来进行分页或排序
- 使用CSS或JavaScript计算分页符的数量
- DataTables-创建自定义分页样式(加载更多样式)
- 使用ajax的服务器端分页&jQuery
- 分页:如何用AJAX加载第一个页面
- dataTables-如何自定义分页类型以显示最后一个页码后面的省略号,
- 不带jquery的全屏分页
- 更改组合框分页后,getValue和getRawValue返回相同的值
- jQuery简单分页
- 使用jQuery在表中分页
- jQuery分页下一页和上一页按钮在点击零或超过最后一页后失败
- jQuery:根据select选项中的每页项目进行分页
- 如何为我的分页添加格式
- 用键盘分页jQuery下一个和上一个控件.触发器('点击')不'不起作用
- 用angular.js加载更多分页|按钮dos'不要藏起来
- 用__doPostBack函数分析一个.aspx站点的分页
- 用分页初始化dataTable,然后禁用它
- 用angular js几乎可以分页任何东西,实例化模块失败错误
- 用分页从剑道网格中删除行