首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >为什么我的自定义函数不起作用?

为什么我的自定义函数不起作用?
EN

Stack Overflow用户
提问于 2015-04-03 09:51:07
回答 1查看 47关注 0票数 1

在创建我自己的jQuery方法时,为什么会这样:

代码语言:javascript
运行
复制
(function($){
    $.fn.test = function() {
        return this.each(function(){
            $(this).html("Hi there");
        });
    } 
})(jQuery);
$(document).ready(function(){
    $("body").click(function(){
        $(this).test().css("color", "orange");
    });
});

但这不是吗?

代码语言:javascript
运行
复制
(function($){
    $.fn.test = function() {
        return this.each(function(){
            $(this).html("Hi there");
        });
    } 
    $("body").click(function(){
        $(this).test().css("color", "orange");
    });
})(jQuery);

我尝试过用jQuery替换$,但仍然不起作用。它似乎只能在一个单独的doc.ready函数中工作,有人能解释为什么吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2015-04-03 09:55:32

您的第二个代码片段没有按预期工作,因为

代码语言:javascript
运行
复制
(function($) {...})(jQuery)

在文档准备好之前运行

通过包装您的

代码语言:javascript
运行
复制
$('body').click(function () {...})

在一个

代码语言:javascript
运行
复制
$(document).ready(function() {...})

您是在告诉jQuery运行

代码语言:javascript
运行
复制
$('body').click(function () {...})

在页面加载之后。

你(可能)想要做的事情:

代码语言:javascript
运行
复制
$(document).ready(function() {
    $.fn.test = function() {
        return this.each(function() {
            $(this).html("Hi there");
        });
    }
    $("body").click(function() {
        $(this).test().css("color", "orange");
    });
});

这将同时运行

代码语言:javascript
运行
复制
$.fn.test = function() {...}

代码语言:javascript
运行
复制
$("body").click(function() {...}

在文档准备好之后(基本上就是页面完全加载时),就有点不同了,但在这里阐述这一点并不是很有建设性。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29425154

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档