Javascript jQuery在函数中调用用户定义的函数

Javascript jQuery在函数中调用用户定义的函数,javascript,jquery,html,Javascript,Jquery,Html,我尝试在jquery函数中调用用户定义的函数,但无效我尝试了以下操作: function close_quote_bar() { alert('oh hai'); } if($('#sliding_quote:visible')) { $('#sliding_quote').slideUp(); $('#trans_div').animate({opacity: 0.0}).css('display','none').close_quote_bar; } 还有这

我尝试在jquery函数中调用用户定义的函数,但无效我尝试了以下操作:

function close_quote_bar() {
    alert('oh hai');
}


if($('#sliding_quote:visible')) {

    $('#sliding_quote').slideUp();
    $('#trans_div').animate({opacity: 0.0}).css('display','none').close_quote_bar;

}
还有这个

//Function to close quote bar
function close_quote_bar() {
    alert('oh hai');
}

$('#get_quote_bar img').click(function() {                          
    if($('#sliding_quote:visible')) {               
        $('#sliding_quote').slideUp();
        $('#trans_div').animate({opacity: 0.0}).css('display','none').close_quote_bar;

    }               
});
运气不太好!当我调用close_quote_bar,或者我得到一个对象缺少方法错误时,不会发生任何事情


希望你们能给我指出正确的方向我真的在努力解决这个问题我想你们想要这样的东西:

$('#sliding_quote:visible').slideUp( function(){
    $('#trans_div').css('display','none');
    close_quote_bar();
} );

它使用向上滑动回调,然后将对象设置为“无”,并运行函数。这段代码还取消了if语句,改为使用选择器只影响可见元素。

这行代码需要更改

$('#trans_div').animate({opacity: 0.0}).css('display','none').close_quote_bar;
你必须这样称呼它

$('#trans_div').animate({opacity: 0.0}).css('display','none');
close_quote_bar();
最后,要在动画制作完成后触发closequotebar,请使用以下代码,注意第3个参数中有一个函数()

$('#trans_div').animate({opacity: 0.0}, 400, function(){
    $(this).css('display','none');
    close_quote_bar();
});
animate和slideUp都支持添加function()块作为参数,因此可以在动画制作完成后调用函数 请参阅“完整”部分,您应该尝试以下方法:

$('#trans_div').animate({opacity: 0.0}, 400, function(){
    $(this).css('display','none');
    close_quote_bar();
});

基于@laurencek的答案

$('#sliding_quote:visible').slideUp( function(){
    $('#trans_div').fadeOut( function(){
      close_quote_bar();
    });
});

这将执行
close\u quote\u bar()
作为
fadeOut

的回调。结果表明,函数被调用了,它不是范围问题或类似问题


我在scroll(.scroll)上执行的另一个函数与该函数冲突,因此它的行为异常,似乎没有执行。

设置css后,需要在动画或的回调中调用自定义函数。它目前不起作用,因为您的函数不是jquery对象的方法。您既不调用它,也不是jquery对象的方法。另外,您想什么时候收到警报?顺便说一句:我想您想要
if($('slided'))
,当前jQuery包装器总是真实的(即使它不包含任何内容)。看起来OP希望他的
$('trans#u div')
淡出。可能使用而不是
.css(…)
Fair point,可能使用:$('#trans_div').fadeOut(函数(){close_quote_bar()});是的,当我编辑我的评论时意识到了这一点,并决定将其作为我自己的答案添加;-)这看起来很好,我现在就去试试,谢谢Laurence:P但是,有人能告诉我为什么我当前的代码不工作,而且我知道它应该在函数调用后有括号-我尝试了一些事情,在粘贴代码执行函数时忽略了它们,你需要
()
。另外,要使函数成为jquery“可链接”方法(
$(something).other().somethingElse()…
)还需要更多的代码。通常,您只需执行函数作为
funcName()在它们自己的行上否,它执行一个不必要的匿名函数作为回调。为什么不
$('#trans_div').fadeOut(关闭引用栏)?你当然是对的;-)。不过我总是使用匿名函数模式。我这样做主要是出于习惯,但在我看来,它更容易更新和阅读。我想我应该说“在回电话时”