【发布时间】:2013-11-07 21:58:39
【问题描述】:
我使用 AJAX 加载页面。该页面包含以下代码(对于 div 的移动动画,#1 将其向左移动,#2 将其再次向后移动)
#1
$('#flipper').click(function () {
$(".l-l").animate({ "left": -267 }, 600, function () {
$('#flipper').addClass('flipper-h');
});
});
#2
$('#flipper.flipper-h').die(); //to prevent .live() event bubbling. I guess
$('#flipper.flipper-h').live('click', function () {
$(".l-l").animate({ "left": 0 }, 600, function () {
$('#flipper').removeClass('flipper-h');
});
});
使用该代码我有一些问题:
1) 第一页加载后,代码#2 在动画开始前有一点卡顿
2) 在第二个(以及更多)页面加载后,#2 代码不会触发。为什么?
编辑
我注意到代码 #2 被无限次调用(这很奇怪)。但是,我已经通过代码修复了 1) 的情况:
$('#flipper').click(function () {
if(!$(this).hasClass('flipper-h')) {
$(".l-l").animate({ "left": -267 }, 600, function () {
$('#flipper').addClass('flipper-h');
});
} else {
$(".l-l").animate({ "left": 0 }, 600, function () {
$('#flipper').removeClass('flipper-h');
});
}
});
但问题 2) 仍未解决。有什么想法吗?
【问题讨论】:
-
live()已被so 弃用。 stackoverflow.com/questions/9422069/… -
好的,现在是
$('div').on('click', '#flipper.flipper-h', ....) -
不是因为你有 $('#flipper') 选择器和 $('#flipper.flipper-h') 选择器,所以在第二种情况下,两个动画都被调用,看起来像没有移动全部? (也许我错了......)我猜没有阻止事件冒泡......
-
刚刚阅读,die() 也被弃用了(与 live 相同)
-
你能发布你的 ajax 是如何工作的,或者至少你的页面有一些状态吗?
标签: javascript jquery ajax