我正在尝试取消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;
};
但我收到此错误:
&#34;未捕获的TypeError:el.data不是函数&#34;
任何人对如何修复都有任何想法?
答案 0 :(得分:0)
el
是DOM对象引用,它不是jQuery对象,所以你不能在它上面调用jQuery方法。
要在VanillaJS中获取data-*
属性值,您可以使用dataset。
使用
el.dataset.delay
如果想要使用jQuery方法,可以在jQuery中包装元素引用
$(el).data('delay')