0

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

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

   });  
}

我该如何使用它?

4

6 回答 6

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您可以使用委托

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

   });
于 2012-04-25T07:02:28.007 回答
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() {

}); 

而不是你在问题中写的。

于 2012-04-25T07:02:57.483 回答
1

.live(事件,处理程序(事件对象))

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

});
</script>
于 2012-04-25T07:02:41.390 回答
1

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

Live 已弃用 - 不应使用。ps 这也替换了委托语法 - 如果你愿意......

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

例子 :

$(".myDiv").on("click","#myButton",function (){
alert('1');
})
于 2012-04-25T07:03:09.690 回答
1

我认为如下所示:

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

   });  
}

居住

于 2012-04-25T07:03:20.230 回答
1

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

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

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

   });  
}
于 2012-04-25T07:03:34.123 回答