Следующая демонстрация может связать несколько элементов с любым применимым событием и функцией обратного вызова. Преимущество использования этого класса заключается в том, что параметры selector
, event
и callback
могут быть любыми, и для нескольких слушателей не нужно предпринимать никаких дополнительных шагов.
Подробности прокомментированы в демо
Это модификация кода, представленного в этом [ 116] в статье .
// Define class
class Homepage {
// Pass a CSS selector
constructor(selector) {
// Reference selector
const elements = document.querySelectorAll(selector);
// Get amount of elements
this.length = elements.length;
// Merge the constructor and elements
Object.assign(this, elements);
}
// Pass a callback function
each(callback) {
// Iterate elements...
for (let node of Array.from(this)) {
// ...call callback function fore each element...
callback.call(node);
}
// ...make the method chainable
return this;
}
// Pass event and callback
bind(event, callback) {
// Iterate constructor...
return this.each(function() {
// ...regiter each element to the event and assign callback
this.addEventListener(event, callback, false);
});
}
};
// Instantiate Homepage class
const likeHate = selector => new Homepage(selector);
// Callback rate()
const rate = e => {
// Reference clicked element
const tgt = e.target;
// If the clicked has .btn class...
if (tgt.matches('.btn')) {
// ...get the clicked value...
const val = e.target.value;
// ...reference article#rate...
const rate = document.getElementById('rate');
// ...assign the value of clicked to [data-rate] of #rate
rate.dataset.rate = val;
// If the value of clicked is 'Superior' = thumbs up/down
let icon = val === 'Superior' ? '
Согласно недавно измененному документу Apple, ключ FooterText доступен в словаре PSGroupSpecifier, который доступен только в iOS 4.0 или новее.
То, как я это делаю, и способ, которым я видел другие сторонние приложения, это просто использование информативного Заголовка в качестве PSGroupSpecifier
Я видел только родные приложения Apple, которые делают это другим, немного более приятным способом. Я ожидаю, что эта способность похоронена глубоко в недокументированных областях SDK.