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

标签 javascript jquery

我试图编写一个干净的 jQuery 代码,并将所有内容放入一个我在“each”中调用的函数中。问题是没有任何反应,并且在控制台中没有出现任何错误。

这是一个示例代码:

$(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');
    }   
}

如果我将函数内容放在 .each 中,它可以工作,但在单独的函数中则不行,我认为它应该可以工作。为什么这段代码不起作用?

最佳答案

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

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

关于javascript - 为什么当我在单独的函数中使用 $(this) 并在 .each() 中调用它时它不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18672757/

相关文章:

javascript - jQuery 切换仅适用于 <ul> 中的顶部元素

javascript - 使用 Javascript 向任何页面添加页眉

javascript - 页面上显示的 Div,除非按下按钮,否则不应显示

javascript - React - 在 api 调用之前填充数据?

jquery - 数据表错误: Requested unknown parameter '1' from the data source for row 0

javascript - 为什么 "sticky"javascript 不能在 Firefox/IE 中运行?

javascript - 使用 jQuery 解析 XML

javascript - anchor 链接不适用于 jquery event.preventDefault;

javascript - Mustache.js - 不想更新特定的 div 表

javascript - jQuery 无法在 View 加载的元素上找到元素 [AngularJS]