事件处理程序在jquery中没有响应

时间:2014-01-21 19:01:41

标签: jquery event-handling

jquery的:

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

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

2 个答案:

答案 0 :(得分:0)

请记住,一旦你将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);
    }
});

答案 1 :(得分:-1)

您的代码错误,您将一个mousedown事件处理程序嵌套在一个keyup事件处理程序中,并且都在同一个元素上分配。(Mousedown虽然同一个元素上的keyup看起来不合逻辑)

相反,正确的是:

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