我有一个脚本,我想在下面的代码中使用。
if($('#Menu').length >0) {
$('#Menu >li').click(function() {
});
}
我该如何使用它?
我有一个脚本,我想在下面的代码中使用。
if($('#Menu').length >0) {
$('#Menu >li').click(function() {
});
}
我该如何使用它?
使用on而不是live
从 1.7 开始不推荐使用
if($('#Menu').length) {
$('#Menu').on('click', '> li', function() {
});
}
从 jQuery 1.7 开始,不推荐使用 .live() 方法。使用 .on() 附加事件处理程序。旧版本 jQuery 的用户应该使用 .delegate() 而不是 .live()。
如果您使用的是 jQuery 版本< 1.7
,>= 1.4.2
您可以使用委托
$('#Menu').delegate('> li', 'click', function() { // different argument order than on
});
你没有。
.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() {
});
而不是你在问题中写的。
<script>
$("#Menu >li").live("click", function(){
});
</script>
你不应该使用live
. 你应该使用on
Live 已弃用 - 不应使用。ps 这也替换了委托语法 - 如果你愿意......
您不必提供第二个参数 - 然后它将收听容器本身及其所有子项 + 子项。因为(1.7+)
例子 :
$(".myDiv").on("click","#myButton",function (){
alert('1');
})
从 jQuery 1.7 开始,不推荐使用 .live() 方法。使用 .on() 附加事件处理程序。旧版本 jQuery 的用户应该使用 .delegate() 而不是 .live()。
在您的情况下,您可以像这样使用
if($('#Menu').length >0) {
$('#Menu >li').live("click", function() {
});
}