我有一个脚本,我想在下面的代码中使用live。
if($('#Menu').length >0) {
$('#Menu >li').click(function() {
});
}
我该如何使用它?
答案 0 :(得分:5)
使用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
,则可以使用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)
答案 5 :(得分:1)
从jQuery 1.7开始,不推荐使用.live()方法。使用.on()附加事件处理程序。旧版jQuery的用户应该使用.delegate()而不是.live()。
在您的情况下,您可以像这样使用
if($('#Menu').length >0) {
$('#Menu >li').live("click", function() {
});
}