jquery插件css不透明度

时间:2015-10-06 13:53:59

标签: jquery jquery-plugins

我正在尝试为CRT类型效果创建一个简单的jquery插件。我检查了文档 - > https://learn.jquery.com/plugins/basic-plugin-creation/但我想我不明白。

当我执行代码而不将其转换为插件时,它可以正常工作。

\unnnn

当我把它变成插件时,它什么都不做。

setInterval(function(){
  $('#wallpaper').css("filter", "opacity("+ String(Math.random() * (0.96 - 1.0) + 0.96 ) +")");
}, (Math.random() * (500 - 1000) + 100) );

当我将$.fn.crt = function(){ setInterval(function(){ $(this).css("filter", "opacity("+ String(Math.random() * (0.96 - 1.0) + 0.96 ) +")"); }, (Math.random() * (500 - 1000) + 100) ); } console.log($('#wallpaper').crt()); 更改为$(this).css()...时,它会出现以下错误:this.css()...

有谁能告诉我如何让这个代码在插件中工作或者我做错了什么?

1 个答案:

答案 0 :(得分:1)

超时内的

this不是你想象的那样。它将是窗口对象。您需要bind()匿名函数或使用经典的闭包技术来定义外部变量。

$.fn.crt = function(){
  var that = $(this);
  setInterval(function(){
    that.css("filter", "opacity("+ String(Math.random() * (0.96 - 1.0) + 0.96 ) +")");
  }, (Math.random() * (500 - 1000) + 100) );
}