我有一个标签选中的复选框。然后我将一个选定的类添加到父li。一旦发生这种情况,我想计算' .gquiz-correct-choice .gquiz-indicator'的实例。在页面上。
只有在我第二次点击时才会更新计数。
我已尝试添加'返回false'。绑定点击& mouseup,使用更改而不是mouseup,但我似乎无法使其工作。
{{1}}
答案 0 :(得分:0)
关于错误jquery事件未被触发只是尝试打印到控制台。 在此codepen中,您会看到两个事件同时被触发(As per Q/A here)
jQuery('.clickit ul li').click(function(event) {
console.log('added class')
jQuery(this).parent('ul').addClass('selected');
});
jQuery('.clickit li').mouseup(function() {
console.log('count')
});
答案 1 :(得分:0)
这是因为在点击之前执行了mouseup。
解决问题的方法是:
// global variable to test if mouse
var mousedUpFired = false;
function doMouseUp() {
var numItems = jQuery('.gquiz-correct-choice .gquiz-indicator').length;
jQuery('.pts').html(numItems + '/20');
}
jQuery(document).on('click', '.gfield_radio li label', function(e) {
jQuery(this).parent('li').addClass('selected');
// check if mouseup has been triggered
// if yes, execute what contained in your old mouseup event handler
if (mousedUpFired) {
doMouseUp();
}
// reset global variable
mousedUpFired = false;
});
$(function () {
jQuery('.gfield_radio li label').mouseup(function(e){
// set global variable on mouseup and do nothing
mousedUpFired = true;
});
});
答案 2 :(得分:0)
第一次点击似乎被劫持了#39;所以我决定添加一个超时来运行计数。
jQuery(document).on('click', '.gfield_radio li label', function(event) {
jQuery(this).parent('li').addClass('selected');
setTimeout(
function() {
var numItems = jQuery('.gquiz-correct-choice .gquiz-indicator').length;
jQuery('.pts').html(numItems + '/20'); },
500);
});