Невозможно удалить элемент из динамической формы jquery - PullRequest
0 голосов
/ 01 ноября 2018

Я создаю динамическую форму с хорошим редактором wysiwig, который выглядит следующим образом.

Необходимые скрипты

<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="http://js.nicedit.com/nicEdit-latest.js" type="text/javascript"></script>
<script type="text/javascript">bkLib.onDomLoaded(nicEditors.allTextAreas);</script>

Html

        <div id="p_scents">
            <p>
                <input type="text" name="title">
                <textarea name="description[]" rows="20" cols="80"></textarea>
            </p>
        </div> 

И функция JQuery

$(function () {
     var editors = {}; //Keep track of all added nicEditors for removal later
     var scntDiv = $('#p_scents');


     $(document).on('click', '#addScnt', function () {
var elm = $('<div class="con"><input type="text" id="Text1" value="" /></div>').appendTo(scntDiv);
         var elm = $('<textarea NAME="description[]"></textarea>').appendTo(scntDiv); // Add the textarea to DOM

         var curSize = $('textarea[name="description[]"]').length; //Get the current SIZE of textArea

         editors[curSize] = new nicEditor().panelInstance(elm[0]); //Set the Object with the index as key and reference for removel

         elm.after($('<a/>', { //Create anchor Tag with rel attribute as that of the index of corresponding editor
             rel: curSize,
                 'class': "remScnt",
             text: "Remove",
             href: '#'
         })).next().andSelf().wrapAll($('<p/>')); //add it to DOM and wrap this and the textarea in p

     });

     $(document).on('click', '.remScnt', function (e) {
         e.preventDefault();
         var elem = $(this).prev('textarea'); //Get the textarea of the respective anchor
         var index = this.rel; //get the key from rel attribute of the anchor
         editors[index].removeInstance(elem[0]); //Use it to get the instace and remove
         delete editors[index]; //delete the property from object
         $(this).closest('con').remove();
         $(this).closest('p').remove(); //remove the element.

     });
 });

Этот скрипт взят из вопроса переполнения стека. NicEdit html редактор для управления динамическим добавлением / удалением текстовых областей

С помощью этого скрипта я хочу прикрепить текстовое поле в качестве заголовка, вышеописанный скрипт создает то же самое, но как только он создается, если я нажимаю на кнопку удаления, он не удаляется, только текстовая область удаляется, где я иду неправильно как я могу это исправить?

Обновленная скрипка здесь http://jsfiddle.net/eEUEW/34/

1 Ответ

0 голосов
/ 01 ноября 2018

вы можете использовать .parent() и .prev()

заменить

$(this).closest('con').remove();
$(this).closest('p').remove();

с

$(this).parent().prev().remove();
$(this).closest('p').remove();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...