我们试图确保加载内容的JavaScript菜单在加载有问题的内容并通过.show('blind',500)展开之前不会被命令超载,因为这样动画会多次运行,而且看起来不太好。因此,我有大约六个选择器,如下所示:
("#center_content:not(:animated)")
而且它似乎没有任何作用。仅尝试:animated具有预期的效果(它永远不会起作用,因为它不会开始动画化),而尝试:not(div)也具有这种效果(因为#center_content是div)。由于某种原因,:not(:animated)似乎并没有改变结果,因为即使当我在有问题的div动画化的情况下触发选择器时,代码也会运行。我知道我以前在这类事情上已经取得了成功,但是这里的区别让我难以理解。
$("#center_content:not(:animated)").hide("blind", 500, function () {
var selector_str = 'button[value="' + url + '"]';
//alert(selector_str);
var button = $(selector_str);
//inspectProperties(button);
$("#center_content:not(:animated)").load(url, CenterContentCallback);
if (button) {
$("#navigation .active").removeClass("active");
button.addClass("active");
LoadSubNav(button);
}
});
我希望这提供了足够的背景。我觉得第二个选择器过大(因为只有第一个选择器成功后才运行),但是我看不到它将如何以这种方式运行。
这是在其他情况下似乎起作用的代码段:
function clearMenus(callback) {
$('[id$="_wrapper"]:visible:not(:animated)').hide("blind", 500, function() {
$('[id^="edit_"]:visible:not(:animated)').hide("slide", 200, function() {
callback();
});
});
}
在这里,动画排队而不是互相打扰,但是我发现选择器似乎仍然不起作用-动画和关联的加载事件根本不应该运行,因为选择器应该失败。尽管排队是显示动画的好行为,但它使我意识到,我似乎从未使该选择器起作用。我想念什么吗?
最佳答案
有时在开始新动画之前使用 .stop()
并停止当前动画会很有帮助。
$("#center_content").stop().hide("blind", 500, function () {});
真正取决于它在您的环境中的行为。请记住,
.stop()
将按原样停止动画(例如,在隐藏或淡入过程中途停止)