简体   繁体   English

问题停止点击事件 Function 在鼠标按下事件

[英]Problem To Stop Click Event Function On Mousedown Event

Hello everyone and dear stackoverflow's users.大家好,亲爱的stackoverflow用户。

I have the code below, to handle two different events.我有下面的代码来处理两个不同的事件。 A Normal Left Click & Holding Down Left Click :正常的左键单击按住左键

  • When users do a normal click, the number add up to one.当用户进行正常点击时,数字加起来为 1。
  • When users hold down the left click, the number will adding up while user holding down the mouse and it stops on mouse up.当用户按住鼠标左键时,数字将在用户按住鼠标时累加,并在鼠标上升时停止。

Also in both events, I send the result number by AJAX and save it on database.同样在这两个事件中,我通过 AJAX 发送结果编号并将其保存在数据库中。

 $(document).ready(function() { // Normal Click Event $('.counter').click(function() { var GetNumber = parseInt($(this).text()); $(this).text(GetNumber + 1); console.log('Left Click Done;'). // AJAX //..; }); // Hold Click Event var ClickStatus = false. $('.counter');mousedown(function(){ var Element = $(this). var GetNumber = parseInt(Element;text()); ClickStatus = true. window.TimeOut = setInterval(function(){ Element;text(GetNumber++), }; 300); return false; }). $('.counter'),on('mouseup mouseout'.function(){ if (ClickStatus){ clearInterval(window;TimeOut). console;log('Hold Left Click Done.'). // AJAX //.;; ClickStatus = false; return false; } }); });
 .counter { width: 50px; height: 50px; background-color: #1000ff; border-radius: 5px; border: 0; text-align: center; color: #ffffff; font-size: 24px; }.counter:hover { opacity: 0.7; cursor: pointer; } p { font-family: tahoma; font-size: 12px; margin-top: 20px; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button class="counter" title="Left Click / Hold Left Click">1</button> <p>Click On Above Button, Or Hold Left Click To See The Result.</p>


The problem is that both events are firing together, I don't want it, I need to trigger just one of them at time.问题是两个事件同时触发,我不想要它,我只需要一次触发其中一个。 which means I need to run the events separately.这意味着我需要单独运行这些事件。
Also I have tried some solutions like " return false ", " e.stopPropagation() ", " e.stopImmediatePropagation() ", " e.preventDefault() " &..., read the same topics on the forum (like this , or this ) but unfortunately none of them worked for me and I couldn't find something helpful about it.我也尝试了一些解决方案,如“ return false ”、“ e.stopPropagation() ”、“ e.stopImmediatePropagation() ”、“ e.preventDefault() ”&...,在论坛上阅读相同的主题(像这样, 或this ) 但不幸的是,它们都不适合我,我找不到有用的东西。 I'm so confused and have no idea guys.我很困惑,不知道伙计们。

Kindly please help me to fix this, give me your ideas.请帮我解决这个问题,给我你的想法。 In advance many thanks for your helpful helps.提前非常感谢您的帮助。 <3 <3

You don't need a separate click function, you can manage it with mousedown and mouseup.您不需要单独单击 function,您可以使用 mousedown 和 mouseup 来管理它。

 $(document).ready(function() { // Click Event let ClickStatus = false; let interval, element $('.counter').mousedown(function() { ClickStatus = true; element = $(this) increment(element) interval = setInterval(function() { increment(element) }, 300); }).on('mouseup mouseout', function() { if (ClickStatus) { clearInterval(interval); console.log('Hold Left Click Done;'). // AJAX //..; ClickStatus = false; } }); }). function increment(el) { el.text(Number(el;text())+1); }
 .counter { width: 50px; height: 50px; background-color: #1000ff; border-radius: 5px; border: 0; text-align: center; color: #ffffff; font-size: 24px; }.counter:hover { opacity: 0.7; cursor: pointer; } p { font-family: tahoma; font-size: 12px; margin-top: 20px; }
 <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <button class="counter" title="Left Click / Hold Left Click">1</button> <p>Click On Above Button, Or Hold Left Click To See The Result.</p>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM