如何使用live()?

时间:2012-04-25 07:00:12

标签: jquery

我有一个脚本,我想在下面的代码中使用live。

if($('#Menu').length >0) {
   $('#Menu >li').click(function() {

   });  
}

我该如何使用它?

6 个答案:

答案 0 :(得分:5)

使用on代替live,因为它已从1.7开始弃用

if($('#Menu').length) {
   $('#Menu').on('click', '> li', function() {

   });  
}

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

  

从jQuery 1.7开始,不推荐使用.live()方法。使用.on()来   附加事件处理程序。旧版jQuery的用户应该使用   .delegate()优先于.live()。

如果您使用的是jQuery版< 1.7>= 1.4.2,则可以使用delegate

   $('#Menu').delegate('> li', 'click', function() { // different argument order than on

   });

答案 1 :(得分:2)

你没有。

.live()已弃用赞成.delegate(),然后.delegate()(以及.bind()等)已被弃用,转而使用.on()

.live()的继任者

的实施例

这可能会给你类似的结果:

$('#Menu').on('click', '> li', function(){

});

如果您没有.on(),请使用.delegate()

正如我所提到的,.live()已被弃用,而不是.delegate(),所以如果你的jQuery版本中没有.on(),你应该尝试使用.delegate()首先:

$('#Menu').delegate('> li', 'click', function(){

});

live()做类似的事情

如果你坚持.live(),你可以编写这样的代码:

$('#Menu > li').live('click', function(){

});

更正了问题

的示例

通常,您不需要检查是否存在向其添加事件处理程序的内容。 jQuery将搜索该元素,如果没有找到,它将不会添加事件处理程序,因此您可以编写:

$('#Menu >li').click(function() {

}); 

而不是你在问题中所写的内容。

答案 2 :(得分:1)

.live( events, handler(eventObject) )

<script>
$("#Menu >li").live("click", function(){

});
</script>

答案 3 :(得分:1)

你不应该使用live。 你应该使用on

Live已弃用 - 不应使用。 附:这也取代了委托语法 - 如果你愿意......

你不必提供第二个参数 - 然后它将监听容器本身及其所有子项+子项。 自(1.7 +)

示例:

$(".myDiv").on("click","#myButton",function (){
alert('1');
})

答案 4 :(得分:1)

我认为如下:

if($('#Menu').length >0) {
   $('#Menu >li').live('click', function() {

   });  
}

live

答案 5 :(得分:1)

从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。旧版jQuery的用户应该使用.delegate()而不是.live()。

在您的情况下,您可以像这样使用

if($('#Menu').length >0) {
   $('#Menu >li').live("click", function() {

   });  
}