Nah, оба не работают, потому что вы на самом деле не находите правильный индекс своего тега.
Почему нет? Поскольку $(this).text()
включает добавленную вами метку удаления, ×
- например. "Утро ×". Так как это не в вашем массиве tags
, index
будет -1. tags.splice(-1, 1);
удалит 1 элемент из конца массива.
В общем, никогда не рекомендуется использовать текст презентации (т. Е. Текст вашего элемента тега) в качестве данных (например, используя этот текст в качестве значения поиска в массиве). Очень вероятно, что он будет сломан, когда что-то изменится в презентации - как здесь. Таким образом, было бы предложение сохранить данные (что вам нужно искать в тегах) как данные - например. используя предоставленный jQuery API data()
- даже если он кажется излишним.
Вот быстрый пример - просто добавление/замена двух линий, которые я пометил с комментариями, начиная с «JT»: JSFiddle
Теперь, вместо того, чтобы смотреть вверх $(this).text()
, мы смотрим вверх значение данных «tagValue», хранящееся с $(this).data()
- таким образом, значение поиска по-прежнему привязано к элементу, но мы не полагаемся на текст презентации.
Можете ли вы предоставить/проверить значение индекса, массива меток и массива tags_java непосредственно перед тем, как выполнить срез на любом из них ..? – abipc
Ваш тэг никогда не находится в массиве - добавленный '×' отображается как часть текста диапазона, поэтому '$ .inArray()' всегда возвращает -1. –