Vanilla js等效于jquery .attr(attributeName,function)

时间:2019-03-04 22:08:24

标签: javascript jquery

我注意到jQuery .attr()有一个变体,它允许您为函数设置属性名称:请参见here

我正在尝试找到与之等效的普通js,但是请注意,setAttribute()函数的出现只是为了允许您将属性值设置为 string :请参见{ {3}}。

更具体地说,我正在尝试将this article的片段从jQuery转换为纯js:

$(function(){
  $('.stroke-double, .stroke-single').attr('title', function(){
    return $(this).html();
  });
});

1 个答案:

答案 0 :(得分:2)

带有函数的jQuery .attr对查询结果中的每个元素进行操作。等价的东西就像

function attrEquiv(selector, attr, setterFunction) {
  document.querySelectorAll(selector).forEach((el, i) => {
    el.setAttribute(attr, setterFunction.call(el, i, attr)) // bind `el` to `this`
  })
}

attrEquiv('.stroke-double, .stroke-single', 'title', function(index, attr) {
  return this.innerHTML
})

ES5版本

var elements = document.querySelectorAll(selector)
Array.prototype.forEach.call(elements, function(el, i) {
  el.setAttribute(attr, setterFunction.call(el, i, attr))
})