【问题标题】:Event Handler is not responding in jquery事件处理程序在 jquery 中没有响应
【发布时间】:2014-01-21 19:01:41
【问题描述】:

jquery:

var pop = $('.popupdiv');
disable();
function disable()
{
   pop.slideDown(1000);
}
$( "body").keyup(function()
{
    $("body") .mousedown(function()
   {
      alert("hii");
  })
  pop.slideUp(1000);
})

在上面的示例中,一旦加载文档,“disable”方法就会按预期执行,但是在“keyup”事件之后“slideUp”函数会执行但“mousedown”事件没有响应。删除“slideUp”方法后“ mousedown”事件响应。我想知道为什么会这样?它的解决方案是什么?我希望“slideUp”方法和“mousedown”事件都在“keyup”事件之后响应。

【问题讨论】:

  • 为什么你在keyup处理程序中绑定mousedown

标签: jquery event-handling


【解决方案1】:

请记住,一旦您将 mousedown 事件处理程序附加到该元素,它就在那里;无需再做一次。因此,这就足够了:

$('body').keyup(function() {}).mousedown(function() {});

如果您想在元素上实现 keyup+mousedown 组合,那么您需要重新考虑这一点。 也许是这样的:

a = false;

$('body').keyup(function() {
    a = true;
}).mousedown(function() {
    if (a) {
        a = false;

        alert("hii");

        pop.slideUp(1000);
    }
});

【讨论】:

    【解决方案2】:

    您的代码错误,您在 keyup 事件处理程序中嵌套了一个 mousedown 事件处理程序,并且两者都分配在同一个元素上。(Mousedown 而在同一元素上的 keyup 似乎不合逻辑)

    正确的是:

    var pop = $('.popupdiv');
    disable();
    function disable()
    {
       pop.slideDown(1000);
    }
    $( "body").keyup(function() {
    //DO something on keyup
    }).mousedown(function() {
    //Do something on mousedown
    });
    

    【讨论】:

      猜你喜欢
      • 2018-06-24
      • 1970-01-01
      • 2015-08-13
      • 1970-01-01
      • 2019-02-15
      • 2012-05-05
      • 2014-09-10
      • 1970-01-01
      • 2013-06-16
      相关资源
      最近更新 更多