Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 20.06.2014, 03:56
Новичок на форуме
Отправить личное сообщение для djmansys Посмотреть профиль Найти все сообщения от djmansys
 
Регистрация: 20.06.2014
Сообщений: 2

удаляет элемент массива только 1 раз
Как заставить удалять последний элемент при каждом клике?
(jQuery 1.8.1)


<p>Lorem ipsum dolor sit amet laborum</p>

 $('p').on('click', function() {
  txt_array = $(this).html().split(' '); // делаю массив
  delete txt_array[txt_array.length - 1]; // удаляю последний элемент
  txt_string = txt_array.join(' '); // соединяю в строку
  $(this).html(txt_string);
})


Причем, уже не раз натыкался, что после изменения контента, функция больше не работает.
Может сам подход к решению неправильный?

Последний раз редактировалось djmansys, 20.06.2014 в 04:12.
Ответить с цитированием
  #2 (permalink)  
Старый 20.06.2014, 08:23
Аватар для Erolast
Профессор
Отправить личное сообщение для Erolast Посмотреть профиль Найти все сообщения от Erolast
 
Регистрация: 24.09.2013
Сообщений: 1,435

Дело в том, что при удалении элемента массива через delete его длина не изменяется. То есть, последний элемент формально остается, но со значением undefined.

Для большинства операций над массивами в javascript существуют встроенные методы. Конкретно для удаления последнего элемента предназначен метод pop. Задача решается так:
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.js"></script>
<p>Lorem ipsum dolor sit amet laborum</p>
<script>
  $('p').on('click', function() {
    var txt_array = $(this).html().split(' '); // делаю массив
    txt_array.pop(); // удаляю последний элемент
    var txt_string = txt_array.join(' '); // соединяю в строку
    $(this).html(txt_string);
})
</script>

Подробней - http://javascript.ru/Array

Последний раз редактировалось Erolast, 20.06.2014 в 08:27.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
jquery .dialog Проблема:Всплывающее окно -отображается только 1 раз! denisOgr AJAX и COMET 1 26.07.2010 20:51
Проблема с IE - находит по шаблону только первый элемент tim-ua jQuery 3 17.07.2010 18:36
live click выполняется несколько раз hara jQuery 9 09.06.2010 10:58
Окно открывается только один раз altermann ExtJS 8 22.04.2010 11:55
задействовать только дочерний элемент roma86 jQuery 2 03.10.2009 21:36