【问题标题】:mouseover while mousedown鼠标按下时鼠标悬停
【发布时间】:2010-06-04 01:36:03
【问题描述】:

我有一个大表,每个单元格为 25x25,每个单元格内都有一个 div。每个 div 都具有“节点”类,并且对它们都应用了背景颜色。我正在编写一些 jQuery 代码,当鼠标按钮按下时,当鼠标移过每个 div 时,它会改变它的颜色。

我目前拥有它,所以当我将鼠标悬停时它可以工作,但我只希望它在鼠标按钮按下时也能工作。我已经尝试了许多不同的方法来让它工作,但到目前为止我还没有看,下面是我当前的代码。

$(document).ready(function(){
  $(".node").mouseover(function(){
   $(this).css({background:"#333333"});
 });
});

【问题讨论】:

    标签: jquery onmouseover onmousedown


    【解决方案1】:

    试试这样的:

    $(document).ready(function(){
    
      var isDown = false;   // Tracks status of mouse button
    
      $(document).mousedown(function() {
        isDown = true;      // When mouse goes down, set isDown to true
      })
      .mouseup(function() {
        isDown = false;    // When mouse goes up, set isDown to false
      });
    
      $(".node").mouseover(function(){
        if(isDown) {        // Only change css if mouse is down
           $(this).css({background:"#333333"});
        }
      });
    });
    

    编辑:

    您可能需要在 .node 上单独创建一个 mousedown 以选择单个项目。

      $('.node').mousedown(function() {
        $(this).css({background:"#333333"});
      });
    

    编辑:

    这是使用bindunbind 的替代方法。

      $(document).mousedown(function() {
          $(".node").bind('mouseover',function(){
              $(this).css({background:"#333333"});
          });
      })
      .mouseup(function() {
        $(".node").unbind('mouseover');
      });
    
      $('.node').mousedown(function() {
        $(this).css({background:"#333333"});
      });
    

    【讨论】:

    • +1 - 为什么没有检查mousedown 的方法(和其他状态...我们有它们用于altctrl 等...为什么不用鼠标?) 超出了我的范围,即使在 DOM2 中,除非我错过了规范中的某些内容。
    • @Stanni - 正如 Nick Craver 所指出的,如果 mousedown 开始于 .node 元素,则该元素将无法获得背景。适合你吗?
    • @Stanni - 不客气。 :o) 我在.node 上添加了一个mosuedown 更新了我的答案,因此您仍然可以进行单项选择。
    • @Stanni - 好吧,还有一件事,然后我保证我会离开! ;o) 为了彻底起见,我使用bindunbind 添加了一个替代版本,以防您不喜欢散布在各处的变量。现在完成。 :o)
    • 那就更好了。你是对的,我更喜欢它而不必使用变量。再次感谢。
    猜你喜欢
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-04
    • 2018-09-03
    • 1970-01-01
    • 2013-07-16
    • 2011-08-22
    相关资源
    最近更新 更多