Как отменить действие обработчика?
Добрый вечер. Возник такой вопрос, можно ли по клику на кнопку отменить предыдущую обработку текста? Не полностью отменить все действия, а только предыдущее. Спасибо
<textarea></textarea> <button id='caps'>ALL CAPS</button> <button id='lower'>all lowercase</button> <button id='cancel'>Cancel</button>
$(document).ready(function(){
$('#caps').click(function() {
$text = $('textarea').val();
$('textarea').val($text.toUpperCase());
});
$('#lower').click(function() {
$text = $('textarea').val();
$('textarea').val($text.toLowerCase());
});
})
|
goody-goody,
$(document).ready(function() {
var $text;
$('#caps').click(function() {
$text = $('textarea').val();
$('textarea').val($text.toUpperCase());
});
$('#lower').click(function() {
$text = $('textarea').val();
$('textarea').val($text.toLowerCase());
});
$('#cancel').click(function() {
if ($text) {
$('textarea').val($text);
$text = ''
}
});
})
|
$('textarea') лучше вынести за функцию, чтобы не парсить каждый раз весь документ.
|
рони, спасибо, я не совсем правильно выразилась, чтоб отменяло не все действия сразу, а по очереди, как в ворде. такое возможно?
|
goody-goody,
да |
goody-goody,
<!DOCTYPE HTML>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
</head>
<body>
<textarea></textarea>
<button id='caps'>ALL CAPS</button>
<button id='lower'>all lowercase</button>
<button id='cancel'>Cancel</button>
<script type='text/javascript' src='http://code.jquery.com/jquery-2.1.4.js'></script>
<script>
$(document).ready(function() {
var temp = [], area = $('textarea');
$('#caps').click(function() {
$text = area.val();
area.val($text.toUpperCase());
if(temp[0] != $text) temp.unshift($text)
});
$('#lower').click(function() {
$text = area.val();
area.val($text.toLowerCase());
if(temp[0] != $text) temp.unshift($text)
});
$('#cancel').click(function() {
$text = temp.shift();
if ($text) {
area.val($text);
}
});
})
</script>
</body>
</html>
|
рони, спасибо огромное!
|
рони,
лучше тогда push/pop, массив легче перетрахивать (А. Г. Лукашенко ©) :) |
laimas,
ок но 0 короче чем temp.length-1 :) |
Это не аргумент :), удалить первый элемент массива, это удалить его, затем сдвинуть все элементы массива, а с конца так только удаление.
|
laimas,
это важно, но тут не так критично :thanks: |
Ну как не критично, судя по просьбе и коду требуется не просто удаление, а история, чем собственно и будет массив или нет так? А кто гарантирует, что история будет короткой? :)
|
Цитата:
|
Не знаю, но если бы массив был явно указан под слово или двойное слово, тогда бы и ворошить его легче было, но все равно затраты больше, чем просто удаление последнего индекса. А тут значения различной размерности да еще если богатая история... В любом случае выгоднее вершину такого стека иметь в конце.
|
laimas,
я давно с тобой согласен. |
Цитата:
|
| Часовой пояс GMT +3, время: 17:59. |