我今天获得了适用于jQuery v7的代码。问题是它也需要适用于1.3.2。我该如何翻译?
$(document).ready(function() {
$("ul#dropdown li ul").hide();
$("ul#dropdown").delegate( 'li', 'click', function () {
if (!$(this).parent().is("ul#dropdown") ) {
return false;
}
$(this).siblings('.' + "current").removeClass("current").children('ul').slideUp('fast');
$(this).addClass("current").children('ul').slideDown('fast')
});
});
答案 0 :(得分:2)
1.3
中授权的唯一选择是live()方法
$("ul#dropdown li").live('click', function () {
if (!$(this).parent().is("ul#dropdown") ) {
return false;
}
$(this).siblings('.' + "current").removeClass("current").children('ul').slideUp('fast');
$(this).addClass("current").children('ul').slideDown('fast')
});
答案 1 :(得分:0)
我看到的唯一问题是您使用delegate
,这是在1.4中添加的。在1.3.2中,您唯一的选择是使用live()
:
$(document).ready(function() {
$("ul#dropdown li ul").hide();
$("ul#dropdown li").live('click', function () {
if (!$(this).parent().is("ul#dropdown") ) {
return false;
}
$(this).siblings('.' + "current").removeClass("current").children('ul').slideUp('fast');
$(this).addClass("current").children('ul').slideDown('fast')
});
});
答案 2 :(得分:0)
最简单的方法是将.delegate()
替换为.live()
(从1.3.0开始就在那里)。这不会在ul node
上创建事件处理程序,而是在document.body
上创建。
这意味着所有事件都必须进一步冒泡,但除非你处理大量的事件处理程序和节点,否则没有明显的性能差异。
$("ul#dropdown li").live('click', function () {
}
参考:.live()