jQuery:多个实时事件绑定

时间:2010-02-21 15:12:50

标签: javascript jquery events binding

如何使用执行多个jQuery事件的新方法来执行实时事件(针对新内容的注入时):

$('.foo', this).bind({
    click: function() {
        //do thing
    },
    mouseover: function() {
        //do other thing
    },
    mouseout: function() {
        //do other other thing
    },
    focus: function() {
        //do other other other thing
    }
}); 

例如,在上面我需要任何内容​​与点击和所有其他事件绑定。

基本上,我试图避免写作:

$('.foo', this).live('click', function() {
     //do thing
  }
});
$('.foo', this).live('mouseover', function() {
    //do other thing
  }
});
$('.foo', this).live('mouseout', function() {
    //do other other thing
  }
});
$('.foo', this).live('focus', function() {
    //do other other other thing
  }
});

2 个答案:

答案 0 :(得分:4)

.........

$('.fastlook', this).live('click', function() {
    // more code.......
  }
}); 

修改

如果要分配多个事件,只需将它们与空格分开,例如:

$("selector").live('click mousemove mousedown', function(){
  // more code.............
});

..........

  

eventTypeA包含的字符串   JavaScript事件类型,例如“点击”   或“keydown。”截至jQuery 1.4   字符串可以包含多个,   空格分隔的事件类型或自定义   事件名称。

来源:http://api.jquery.com/live/

答案 1 :(得分:4)

如果你希望每个活动都做独特的事情,那么你手上就会有一个冗长的任务。如果你需要每个事件都做同样的事情,这将是一个更短的任务。你可以绑定多个事件,但它仍然有点冗长:

$('.foo', this).live('mouseover mouseout', function(e) {
  if (e.type == 'mouseover') {
    // do something on mouseover
  } else
  if (e.type == 'mouseout') {
    // do something on mouseout
  }
});

而且,如果他们都做了同样的事情,这会更简单:

$('.foo', this).live('mouseover mouseout', function(){
  // do something on both events
});

文档:http://api.jquery.com/live/