在 jquery click() 之后调用定义的函数不起作用

Posted

技术标签:

【中文标题】在 jquery click() 之后调用定义的函数不起作用【英文标题】:calling a defined function after jquery click() doesn't work 【发布时间】:2013-07-29 05:58:41 【问题描述】:

请考虑以下脚本块。问题被解释为 cmets。

$(document).ready(function()

    function changeMenu(e) 
        $('#navigator').removeClass('a').removeClass('b').addClass(e);
    ;

    // Neither this line
    changeMenu('element-id');

    $('.mainmenuitem').click(
        // Nor this line execute the function
        changeMenu(this.id)
    );

)

请注意,如果我将代码 $('#nav').removeClass('a').removeClass('b').addClass(e); 置于功能之外,并在已调用 changeMenu() 的两个地方使用它,则效果很好。

【问题讨论】:

【参考方案1】:

语法错误,您需要关闭函数,或者在这种情况下,将函数添加到事件处理程序:

$(document).ready(function()
    function changeMenu(selectedMenuID) 
        $('#navigator').removeClass('a b').addClass(selectedMenuID);
    

    changeMenu('parse-gallery');

    $('.mainmenuitem').click(function() 
        changeMenu(this.id)
    );
);

FIDDLE

【讨论】:

我还要感谢您教我如何一次删除 2 个类! :D @MohammadNaji - 没问题,乐于助人!【参考方案2】:

请检查您的代码中遗漏了什么..

$('.mainmenuitem').click(function()
        changeMenu(this.id)
);

【讨论】:

以上是关于在 jquery click() 之后调用定义的函数不起作用的主要内容,如果未能解决你的问题,请参考以下文章

jquery怎么调用自己定义的方法?

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

.click之后jQuery没有传递变量

CSS伪元素(:之前/:之后)的jQuery .click()事件?

.load (Jquery) 后调用函数

用jquery,实现让快速双击只调用一次对象的click事件。