Поскольку число вкладок является динамическим, я бы, вероятно, использовал атрибут в заголовке / метке вкладки / что угодно, что указывает на то, что она не была прочитана, а затем, когда заголовок / метка вкладки / все прочее При нажатии этого параметра я изменил бы этот атрибут, чтобы указать, что он прочитал , и затем активировал бы функцию, которая может активировать кнопку в зависимости от того, были ли прочитаны все остальные вкладки.
Я не MooTools, но IIRC - это форк Prototype (хотя это было давно, и они, вероятно, разошлись). Обработчик нажатия может выглядеть примерно так в Prototype:
$$('.tabClass').invoke('observe', 'click', function(event) {
this.setAttribute("data-read", "Y");
if ($$('.tabClass[data-read=N]').length == 0) {
$('buttonId').disabled = false;
}
});
... где $$
- это прототип «поиск в DOM для элементов, соответствующих этому селектору CSS», а $
- это прототип «получить мне элемент с этим идентификатором». invoke
там просто вызывает observe
для каждого соответствующего элемента (вы могли бы сделать это с делегированием события), и я думаю, что observe
довольно очевиден. : -)
Код выше делает следующие предположения:
- Ваш заголовок вкладки или любой другой имеет класс "tabClass".
- Вы создали таблицы с атрибутом «data-read», установленным в «N» (например,
<div class="tabClass" data=read="N">
или аналогичный). Префикс data-
должен поддерживать HTML5. (Да, нам наконец-то разрешено помещать любое старое произвольное имя атрибута в элементы, если мы этого хотим! Нам просто нужно добавить к ним префикс data-
.)
- Кнопка имеет идентификатор, "buttonId"
- Кнопка запускается отключена
Редактировать Или использовать класс маркеров, если хотите, все вкладки начинаются с class="tabClass unread"
:
$$('.tabClass').invoke('observe', 'click', function(event) {
this.removeClassName("unread");
if ($$('.tabClass.unread').length == 0) {
$('buttonId').disabled = false;
}
});
Дважды проверьте, что MooTools поддерживает селектор ".tabClass.unread" (это действительно должно, я просто говорю, проверьте). Некоторые реализации могут работать быстрее с селекторами на основе классов, чем на основе атрибутов.