在mousedown和mouseup之间的jquery悬停事件 - 可能吗?

时间:2010-04-19 13:25:18

标签: jquery

如果你想象在微软绘画中你可以点击并按住在一个区域中绘画,我喜欢做类似但是在表格中为单元格添加一个类:

(注意这不是绘画/艺术只是解释它的简单方法!)

以下不起作用......

$(function(){
    $('td').mousedown(function(){
    console.log('down');
      $('td').bind('hover', function(){
        $(this).addClass('booked');
      });
    })

    $('td').mouseup(function(){
       $('td').unbind('hover');
    });
})

3 个答案:

答案 0 :(得分:1)

没有“悬停”事件。为什么不在“mousedown”处理程序中添加类并在“mouseup”中删除它?

如果您希望仅在延迟后添加该类,则在“mousedown”中设置超时以添加该类,并在“mouseup”中取消超时(并删除该类)。

$(function(){
  var timeout;
  $('td')
    .mousedown(function(){
      var $cell = $(this);
      timeout = setTimeout(function() {
        $cell.addClass('booked');
      }, 1000);
    })
    .mouseup(function(){
      cancelTimeout(timeout);
      $(this).removeClass('booked');
    });
});

答案 1 :(得分:0)

看一下jQuery UI Selectable,它与你所描述的类似。看看demo。 简单的实现示例:

<script type="text/javascript">
$(function() {
    $("#selectable").selectable();
});
</script>

<ol id="selectable">
    <li class="ui-widget-content">Item 1</li>
    <li class="ui-widget-content">Item 2</li>
    <li class="ui-widget-content">Item 3</li>
    <li class="ui-widget-content">Item 4</li>
    <li class="ui-widget-content">Item 5</li>
    <li class="ui-widget-content">Item 6</li>
    <li class="ui-widget-content">Item 7</li>
</ol>

答案 2 :(得分:0)

解决:

mouseenter()而非hover()正如Pointy指出的那样,并非明确的功能