如何获得for循环中的mousedown条件?

时间:2019-01-27 08:32:06

标签: javascript jquery loops for-loop

我想在for循环中获取mousedown条件。

但是即使我按下鼠标触发元素(例如:#mousedown_button),我也无法获得它。

启动for循环后如何获得mousedown条件?

$("#mousedown_button").mousedown(function() {
  for_loop()
});

function for_loop() {
  for (i = 50; i > 0; i--) {
    // I cannot get the count_flag(always false even if I mousedown #mousedown_button)
    count_flag = get_mousedown_condition();
    if (count_flag == false) {
      break;
    }
    console.log(i);
    var start = new Date();
    while ((new Date() - start) < 250);
  }
}

function get_mousedown_condition() {
  // get the count flag
  $("#mousedown_button").mouseover(function() {
    return false;
  }).mouseleave(function() {
    return false;
  }).mousedown(function() {
    return true
  }).mouseup(function() {
    return false;
  });
  return false;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id='mousedown_button'>Click</div>

1 个答案:

答案 0 :(得分:0)

您尝试的方式,将所有事件处理程序绑定了50次,它们的返回值将永远不会进入所需的范围,因为我不确定您要尝试什么-我只是将其作为答案,您可以如何存储您的“ count_flag”并在循环中检索

var count_flag = false;


function for_loop() {
  for (i = 50; i > 0; i--) {
    if (count_flag == false) {
      break;
    }
    console.log(i);
    var start = new Date();
    while ((new Date() - start) < 250);
  }
}

function set_mousedown_condition {
  $("#mousedown_button").mouseover(function() {
    count_flag = false;
  }).mouseleave(function() {
    count_flag = false;
  }).mousedown(function() {
    count_flag = true;
    for_loop(); // start the loop also here instead of override the binding
  }).mouseup(function() {
    count_flag = false;
  });  
}


// initialize everything once
set_mousedown_condition()