为什么当我在一个单独的函数中使用$(this)而我在.each()中调用它时它不起作用?

Fle*_*rex 2 javascript jquery

我试图制作一个干净的jQuery代码,我把所有的东西都放在一个我称之为"每个"的函数中.问题是没有任何反应,并且在控制台中没有出现任何错误.

这是一个示例代码:

$(function() {
    $('.myElement').each(function() {
        if($(this).children()) {
            myFunction();
        } else {
            myFunction('.myOtherElement');
        }
    });
});

function myFunction(selector) {
    if(!selector) {
        $(this).html('Finish');
    } else {
        $(this).find(selector).html('Finish');
    }   
}
Run Code Online (Sandbox Code Playgroud)

如果我把我的功能内容放在.each它可以工作,但在一个单独的功能,但我认为它应该工作.为什么这段代码不起作用?

Aru*_*hny 7

执行上下文(this)在这种情况下是不同的,您可以使用.call()来应用它

$(function() {
    $('.myElement').each(function() {
        if($(this).children()) {
            myFunction.call(this);
        } else {
            myFunction.call(this, '.myOtherElement');
        }
    });
});
Run Code Online (Sandbox Code Playgroud)