jQuery Mouseup仅在第二次单击时触发

时间:2016-06-27 23:10:50

标签: jquery mouseup

我有一个标签选中的复选框。然后我将一个选定的类添加到父li。一旦发生这种情况,我想计算' .gquiz-correct-choice .gquiz-indicator'的实例。在页面上。

只有在我第二次点击时才会更新计数。

我已尝试添加'返回false'。绑定点击& mouseup,使用更改而不是mouseup,但我似乎无法使其工作。

{{1}}

3 个答案:

答案 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);
  });