【问题标题】:write $(this) of Jquery in pure javascript [closed]用纯javascript编写Jquery的$(this)[关闭]
【发布时间】:2015-03-01 13:11:34
【问题描述】:
    var item = $('.card');

        var pageLoaded = false;
        var waypoints = item.waypoint(function(direction) {

          if($('.content').css('display') !== 'block'){
console.log('yes it did fire here');
              $(this).addClass("animated doneAnimated" + (pageLoaded ? " fadeInUp" : ""));
          }
        }, {
          offset: '90%'
        });

        pageLoaded = true;

以上代码在 jquery 中工作,但我切换到 zepto。我不知道为什么 zepto 中的 $(this) 是别的东西。如何用纯js编写让代码生效?

【问题讨论】:

  • 如果“纯 JS”是指“没有其他人编写的 JS 库”- 你不能。 $ 函数创建一个 jQuery(或 Zepto)对象。不使用库就不能使用 jQuery(或 Zepto)库。

标签: javascript jquery zepto


【解决方案1】:

$(this) 返回一个 jQuery 对象,所以问如何在 jQuery 之外实现它是没有意义的。

您可以实现的是addClass 函数,您可以使用 DOM 轻松实现:

this.className += "animated doneAnimated" + (pageLoaded ? " fadeInUp" : ""));

这样你就可以使用 vanilla javascript 来改变类。

但是,zepto already supports addClass functionality 和 zepto also supports $(this) 其中this 是任何 DOM 元素。

您应该查看航点函数作为参数传递给您的函数的内容:您的代码似乎还有其他问题。你能指出你能给出的确切错误信息并提出一个最小的测试用例吗?

【讨论】:

  • 我猜应该是:$(this.element).addClass(...); 好点!
猜你喜欢
  • 1970-01-01
  • 2012-12-23
  • 2013-10-22
  • 1970-01-01
  • 2014-01-08
  • 1970-01-01
  • 2023-03-04
  • 1970-01-01
  • 2011-08-31
相关资源
最近更新 更多