jQuery $.扩展到纯JavaScript

Converting jQuery $.extend to pure JavaScript

本文关键字:JavaScript 扩展到 jQuery      更新时间:2023-09-26

我正试图摆脱jQuery,因为我只需要它做很少的事情,而是使用纯JavaScript

我有这样的原始代码:

this.bar = el.find('.bar');
this.options = $.extend({
    delay: $.toInt(el.data('delay')) || 2000
}, options);

我试着用这个来转换它:

function foo(el, options) {
    ..................
    this.bar = el.querySelectorAll(".bar");
    this.options = extend({
        delay: parseInt(el.data('delay')) || 2000 < -- - problem
    }, options);
}

function extend(first, second) {
    for (var secondProp in second) {
        var secondVal = second[secondProp];
        if (secondVal && Object.prototype.toString.call(secondVal) === "[object Object]") {
            first[secondProp] = first[secondProp] || {};
            extend(first[secondProp], secondVal);
        } else {
            first[secondProp] = secondVal;
        }
    }
    return first;
};

但是我收到这个错误:

"Uncaught TypeError: el. "数据不是函数"

谁对如何修复有任何想法?

el是DOM对象引用,它不是jQuery对象,所以你不能在它上面调用jQuery方法。

要在VanillaJS中获取data-*属性值,您可以使用dataset

使用

el.dataset.delay

如果希望使用jQuery方法,可以在jQuery

中包装元素引用。
$(el).data('delay')