依赖于操作的Javascript/Jquery-如何仅在另一个脚本完成后激活命令?

依赖于操作的Javascript/Jquery-如何仅在另一个脚本完成后激活命令?,javascript,jquery,scroll,Javascript,Jquery,Scroll,我正在开发我的网站,我决定使用“设计”的滚动条而不是浏览器附带的滚动条对我有利。我很幸运地遇到了这个脚本,它基本上完全符合我的需要 我遇到的唯一问题是,我试图将自定义滚动条应用于一些最初隐藏的div,然后通过链接div在hide/show之间切换。 作为编程页面(http://www.hesido.com/flexcroll/flexcroll-programming.htm)说明,有时需要更新和/或手动应用滚动条,因为滚动条位于隐藏的div中,在页面打开时不会加载滚动条 我已经检查了我的CSS

我正在开发我的网站,我决定使用“设计”的滚动条而不是浏览器附带的滚动条对我有利。我很幸运地遇到了这个脚本,它基本上完全符合我的需要

我遇到的唯一问题是,我试图将自定义滚动条应用于一些最初隐藏的div,然后通过链接div在hide/show之间切换。 作为编程页面(http://www.hesido.com/flexcroll/flexcroll-programming.htm)说明,有时需要更新和/或手动应用滚动条,因为滚动条位于隐藏的div中,在页面打开时不会加载滚动条

我已经检查了我的CSS和HTML,如果没有隐藏div,代码可以正常工作,所以我100%认为这与我隐藏div的方式有关

其基本格式是

$(文档).ready(函数(){
$('#iddiv').hide();})

所以我先隐藏它,然后通过一个按钮切换它。 现在,在这个逻辑中,
fleXenv.fleXcrollMain(“您的divid”)的手动应用程序应该位于脚本最后一行(包含});)上方的某个位置

然而,这要么使div不可滚动,要么使我的Javascript的其余部分变得混乱(scrollTo函数停止工作,等等)

我的问题是,作为一个noobie JS用户,在切换被激活后,我需要将手动激活自定义滚动条的代码放在我的代码中的什么地方?结构是什么? 我的意思是,
fleXenv.fleXcrollMain(“您的div id”)独立运行,它是否需要单独的功能,它是否在运行前获得$

非常感谢任何能帮我的人!最后一点阻止我启动我的网站

更新! CSS/HTML和代码是我试图实现的一个示例;因为脚本中的一个文件需要下载才能工作,所以我认为唯一的方法是复制并粘贴新HTML文档中的所有位。

尝试以下方法:

$(document).ready(function() {
 $('#id').click(function() {
      $('#iddiv').animate({
           height: 'toggle'
           }, 2000,
           function(){
               fleXenv.fleXcrollMain( $(this).attr('id') );
           }
      );
 });
该函数在
animate
函数完成后执行。

jQuery
.animate()
函数接受更多参数。其中之一是在动画完成时调用的函数

function activateScrollbar () {
    fleXenv.fleXcrollMain('iddiv');
}

$('#iddiv').animate({
        height: 'toggle'
    },
    2000,
    activateScrollbar
);
您还可以使用匿名函数,如下所示:

$('#iddiv').animate({
        height: 'toggle'
    },
    2000,
    function () {
        fleXenv.fleXcrollMain('iddiv');
    }
);
jQuery中包含动画的大多数函数(如
.hide()
.fadeOut()
)允许您传递动画完成时调用的函数。大多数jQuery函数都允许您在配置对象中传递这些额外的参数,这样更易于阅读:

$('#iddiv').animate({
        height: 'toggle'
    },
    {
        duration: 2000,
        complete: function () {
            fleXenv.fleXcrollMain('iddiv');
        }
    }
);
有关更多详细信息,请参阅文档

下面是包含单击行为的完整示例:

$('#myButton').click(function () {

    $('#iddiv').animate({
            height: 'toggle'
        },
        {
            duration: 2000,
            complete: function () {
                fleXenv.fleXcrollMain('iddiv');
            }
        }
    );

});

嘿谢谢你的回复!不幸的是,这并没有改变任何事情;现在切换功能正常,但滚动条仍保持不变。是否检查所有其他内容?是否正确加载了所有脚本和样式表?例如,Firebug的控制台是否显示任何错误?当我在本地主机上检查时,一切正常。顺便说一句,
$('##iddiv').hide()中有输入错误不应该有双重#。这是一个非常详细和教育性的答案,非常感谢。我已经更改了代码,使其现在的读取方式与上面相同,但结果仍然相同。这让我想知道,考虑到您在上面写的内容,滚动条的启动是否应该在“单击”操作的末尾,而不是在“动画”操作的末尾?“单击”是否接受多个参数,或者是否有其他方法。我不确定您是否忽略了单击,或者它是否完全无关。@CasperF click()函数类似于animate()函数,它接受在发生事件时调用的函数。但是在单击的情况下,当元素被单击时,它会立即发生。我更新了我的答案,以便你能在上下文中看到它。您可以这样理解:“1)单击按钮时2)启动动画,3)动画完成时激活滚动条”。另外,别忘了给你觉得有用的答案投票;)绝对没有运气。我确信脚本是正确的,并且满足了滚动脚本的CSS/HTML要求。我相信这可能是人造滚动条的另一种缺陷。我肯定会提高投票率,但我需要15的声誉,而我现在只在8上。这真是毁灭灵魂;这是我的网站中唯一一个没有按预期工作的元素,我用我的知识也无能为力。除非我不隐藏div,这意味着我失去了导航的感觉和风格。事实上,我已经做了一个试用HTML页面,其中只包含隐藏的容器和元素所需的基本CSS/HTML,而滚动条仍然没有加载,因此代码可能会有所不同。
$('#myButton').click(function () {

    $('#iddiv').animate({
            height: 'toggle'
        },
        {
            duration: 2000,
            complete: function () {
                fleXenv.fleXcrollMain('iddiv');
            }
        }
    );

});