我有以下代码在文档就绪事件中起作用:
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() {
答案 0 :(得分:3)
使用jQuery对象作为参数调用ready
事件处理程序,但load
事件处理程序不是。
由于$
作为load
事件处理程序的参数,它将包含事件对象,而不是jQuery对象。当您尝试将事件对象用作jQuery对象时,您将收到错误。
从load
事件处理程序中删除参数,以便您可以从全局范围访问$
变量:
jQuery(window).load(function() {