Документация jQuery для .toggle()
состояния метода:
.toggle () метод обеспечивается для удобства. Это относительно просто для реализации того же поведения вручную, и это может быть необходимо, если предположения, встроенные в .toggle (), доказывают ограничение.
Предположения, созданные в .toggle
доказали ограничение для моей текущей задачи, но документация не уточняет то, как реализовать то же поведение. Я должен передать eventData функциям-обработчикам, предоставленным toggle()
, но это появляется это только .bind()
будет поддерживать это, нет .toggle()
.
Мой первый наклон состоит в том, чтобы использовать флаг, это глобально к единственной функции-обработчику для хранения состояния щелчка. Другими словами, а не:
$('a').toggle(function() {
alert('odd number of clicks');
}, function() {
alert('even number of clicks');
});
сделайте это:
var clicks = true;
$('a').click(function() {
if (clicks) {
alert('odd number of clicks');
clicks = false;
} else {
alert('even number of clicks');
clicks = true;
}
});
Я не протестировал последнего, но я подозреваю, что это работало бы. Действительно ли это - лучший способ сделать что-то вроде этого или является там лучшим способом, которым я отсутствую?
Спасибо!
Кажется разумным способом сделать это ... Я просто предлагаю вам использовать утилиты jQuery для хранения данных , а чем введение дополнительной переменной (которая может стать головной болью, если вы хотите отслеживать целую кучу ссылок). Итак, исходя из вашего примера:
$('a').click(function() {
var clicks = $(this).data('clicks');
if (clicks) {
alert('odd number of clicks');
} else {
alert('even number of clicks');
}
$(this).data("clicks", !clicks);
});