我有以下代码。除此行外,一切都很好,不确定为什么我在此行上出现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);
        });

    }
});

最佳答案

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

您需要这样做:

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

关于javascript - 获取未捕获的TypeError,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/29098549/

10-13 06:06