【问题标题】:What's the vanilla javascript version of jQuery's $var = ($var) statement?jQuery 的 $var = ($var) 语句的原生 javascript 版本是什么?
【发布时间】:2015-09-28 21:35:56
【问题描述】:

我目前正在寻找加载从 flickr API 获取的图像。简单的加载很丑陋,所以我等到它们全部加载然后同时呈现它们,使用this page 上的第二个示例。但是,它使用 jQuery,我想要香草 javascript。我意识到 var $img = $(img) 语句只是在创建一个对象,但它将一个预先存在的 html 元素变成一个对象,我不确定如何在 vanilla JS 中执行此操作。我的图像如下所示:

<img src="http://farm1.staticflickr.com/97/219568294_6a7bef5794_m.jpg" onload="loaded(this)">

我的功能是这样的:

    function loaded(img){
        var $img = $(img);
        var total = document.getElementById('flickr').getElementsByTagName('img').length;
        var percentLoaded = null;

        $img.addClass('loaded');

        var loaded = document.getElementById('flickr').getElementsByClassName('loaded').length;

        if(loaded == total){
            percentLoaded = 100;
        } else {
            percentLoaded = loaded/total * 100;
            document.getElementById("loadingstatus").style.width = percentLoaded + "%";
        };
    };

一旦我弄清楚函数的 $ = $() 部分,我应该能够轻松地将加载类添加到它。

【问题讨论】:

    标签: javascript jquery


    【解决方案1】:

    $(an HTML Element Node) 返回的不仅仅是“一个对象”,它特别是一个 jQuery 对象。

    普通的 DOM 等价物是直接使用 img(并在其上调用标准 DOM 方法而不是 jQuery 方法)。

    【讨论】:

    • 谢谢,这对我来说很有意义。我不知道 jQuery 有自己的对象。
    【解决方案2】:

    这里只使用jQuery给img元素添加类,所以真正的问题是“如何在不使用jQuery的情况下给元素添加类”,答案是这样的:

    img.className += " loaded";
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-11-06
      • 1970-01-01
      • 1970-01-01
      • 2012-03-29
      • 2015-06-01
      • 2011-11-18
      相关资源
      最近更新 更多