gpt4 book ai didi

javascript - 未捕获的类型错误 : Cannot read property 'defaultView' of undefined with a IIFE

转载 作者:行者123 更新时间:2023-11-29 15:38:57 26 4
gpt4 key购买 nike

我正在学习 jQuery 第 4 版(PacktPub 发布),尝试其中一项练习,我必须创建新的插件方法,称为 .slideFadeIn() 和 .slideFadeOut(),结合 .slideFadeOut() 的不透明度动画。 fadeIn() 和 .fadeOut() 与.slideDown() 和 .slideUp() 的高度动画。

这是我当前的代码

(function($) {
$.fn.slides={
slideIn:function(){
$(this).fadeIn().slideDown();
},
slideOut:function(){
$(this).fadeOut().slideUp();
}
}
})(jQuery);

$('h1').click(function(){
$(this).slides.slideOut();
});

然而当我点击 <h1> ,我收到错误消息,

Uncaught TypeError: Cannot read property 'defaultView' of undefined

我也试过

(function($) {
var elem=$(this);
$.fn.slides={
slideIn:function(){
elem.fadeIn().slideDown();
},
slideOut:function(){
elem.fadeOut().slideUp();
}
}
})(jQuery);

看看错误是不是因为$(this)指的是不同的上下文,但我仍然遇到相同的错误

Uncaught TypeError: Cannot read property 'defaultView' of undefined 

编辑:我尝试将代码编辑为

$('h1').fadeOut().slideUp();

它有效,所以问题在于 $(this) ,我只是不明白 $(this) 到底是什么问题

谁能指出我的错误?

谢谢!

最佳答案

您创建插件的方式与我的略有不同,因为“this”是“fn.slides”范围“this”——因此,它会出错。我能够通过传递你想要的“this”的上下文来解决你的问题——这是通过使用“call”的“h1”。通过“调用”(和“应用”),我可以调用该函数并传入我想要的“this”上下文。

(function($) {
$.fn.slides={
slideIn:function(){
$(this).fadeIn().slideDown();
},
slideOut:function(){
$(this).fadeOut().slideUp();
}
}
})(jQuery);

$('h1').click(function(){
$(this).slides.slideOut.call(this);
});

关于javascript - 未捕获的类型错误 : Cannot read property 'defaultView' of undefined with a IIFE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23146160/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com