使用$ window.load时出现jQuery错误

时间:2015-03-07 00:06:55

标签: javascript jquery html css iframe

我有以下代码在文档就绪事件中起作用:

jQuery(document).ready(function($) {

    $('tr[data-name="background_colour"] input.wp-color-picker').each(function() {

        //this works
        $(this).closest('tr').siblings('tr[data-type="wysiwyg"]').css('background-color', this.value);

        //this doesn't because frames are not loaded
        $(this).closest('tr').siblings('tr[data-type="wysiwyg"]').find('iframe').contents().find('body').css('background-color', this.value);
    });
});

tr的背景颜色已成功更改,但body的{​​{1}}未成功更改,因为所有iframe都是动态创建的,并且在文档准备就绪时尚未完全加载。

所以我尝试使用window.load,如下所示:

iframe

但是当我这样做时,我在下面的行中得到jQuery(window).load(function($) { $('tr[data-name="background_colour"] input.wp-color-picker').each(function() { //this works $(this).closest('tr').siblings('tr[data-type="wysiwyg"]').css('background-color', this.value); //this doesn't because frames are not loaded $(this).closest('tr').siblings('tr[data-type="wysiwyg"]').find('iframe').contents().find('body').css('background-color', this.value); }); });

Uncaught TypeError: object is not a function

感谢Guffa的回答让这个工作。以下是可能对其他人有用的正确代码:

$('tr[data-name="background_colour"] input.wp-color-picker').each(function() {

1 个答案:

答案 0 :(得分:3)

使用jQuery对象作为参数调用ready事件处理程序,但load事件处理程序不是。

由于$作为load事件处理程序的参数,它将包含事件对象,而不是jQuery对象。当您尝试将事件对象用作jQuery对象时,您将收到错误。

load事件处理程序中删除参数,以便您可以从全局范围访问$变量:

jQuery(window).load(function() {