更新:这是一个显示问题的 JSFIDDLE
我正在尝试做一些类似于 github 的文件浏览器的事情。
https://github.com/mitsuhiko/flask
(只需单击一个文件夹即可演示。唯一的区别是我想要的是正确的“幻灯片”。)
我有一个 ajax 调用,它返回一些 json 并用于替换 div。我大部分时间都在工作,但我无法弄清楚我将用于以下操作的 jquery:
- hide() 我想用 jqueryUI 'slide' 效果替换的现有 div
- 使用replaceWith替换内容(由于各种原因我不能使用html()它需要replaceWith()但保持隐藏
- 将一些 jquery 行为重新附加到新内容(此代码是 Drupal 特定的,但它是单行代码。它将其他 jquery 行为重新附加到新内容)并且内容仍然是隐藏的。
- show() 带有 jqueryUI 'slide' 效果的新 div
我尝试了很多不同的东西。我知道 ajax 是异步的,所以我需要在回调中运行它或链接行为。到目前为止,我已经做到了:
/* this snippet occurs in an $.ajax success: function, argumentWrapper is the div
wrapper to replace, newContent is the new html that will be inserted */
argumentWrapper.hide({
effect: 'slide',
direction: 'left',
complete: function() {
argumentWrapper.replaceWith(function() {
return $(newContent).hide({
complete: function(){
Drupal.attachBehaviors(newContent);
}
}).show({
effect: 'slide',
direction: 'right'
});
});
}
});
这几乎可以工作,但在它滑回之前,我得到了一种奇怪的“聚拢”效果。就像在左侧有一个非常然后的 div 的暂停。
更新:这是一个显示问题的 JSFIDDLE