В моей библиотеке я хочу написать небольшую функцию для closest()
и особенно получить значение определенного data-attribut
ближайшего элемента, потому что в моем приложении мне нужно использовать это очень часто. : D
Но мне только консоль сообщает:
TypeError: x.getAttribute не является функцией
var $ = function(s) {
var x;
var obj = {
myLib(s) {
return x || querySelectorAll(s);
},
myFunction(s) {
if (s.startsWith('data-')) { // in this block is sth. wrong
x = [x[0].closest('*["' + s + '"]')];
return x.getAttribute(s);
} else {
x = [x[0].closest(s)];
return this;
}
}
};
x = obj.myLib(s);
return obj;
};
////////// usage examples
// get the value of attribute "data-wrestler"
var dv = $('.kilo').myFunction('data-wrestler');
console.log(dv);
// select the closest element by selector
var ce = $('.kilo').myFunction('.uniform');
console.log(ce);
// would select the closest element with specific data-attribut by selector
var da = $('.kilo').myFunction('*["data-wrestler"]');
console.log(da);
<div id="foxtrott">
foxtrott
<div class="uniform" data-wrestler="hulkster">
uniform
<div class="charlie">
charlie
<div class="kilo">
kilo
</div>
</div>
</div>
</div>