正在获取未捕获的类型错误

Getting an Uncaught TypeError

本文关键字:类型 错误 获取      更新时间:2023-09-26

我有以下代码。除了这一行之外,一切都很好不确定为什么我在这一行上得到Uncaught TypeError错误

this.find('iframe').contents().find('body').css('background-color', settings.color);

尤其是console.log(this)正确地输出了元素。我是jQuery的新手,所以这可能是我没有看到的明显的东西。

jQuery(document).ready(function($) {
    $('div[data-name*="form_background_colour"] input.wp-picker-clear').click(function() {
        $(this).setDefaultFormEditorBackground();
    });
});
jQuery.fn.extend({
    setDefaultFormEditorBackground: function (options) {
        var settings = jQuery.extend({
            color: ""
        }, options );
        var $colorpicker_input = this;
        var $bgcolor_div = $colorpicker_input.closest('div[data-name*="form_background_colour"]');

        $bgcolor_div.nextAll('[data-type="wysiwyg"]:lt(2)').each(function() {
            console.log(this);
            console.log($colorpicker_input);
            this.find('iframe').contents().find('body').css('background-color', settings.color);
            $colorpicker_input.closest('.wp-picker-container').find('.wp-color-result').css('background-color', settings.color);
        });
    }
});

each()回调中的this将是元素本身,而不是它们的jQuery包装器。

你需要这样做:

jQuery(this).find('iframe').contents().find('body').css('background-color', settings.color);