Редактировать каждый div отдельно

0

У меня есть div, и он может редактировать только div с определенным идентификатором

Теперь, когда я показываю каждый div из списка базы данных, как я могу редактировать каждый div отдельно. Надеюсь, что я свободен. Спасибо.

  • 0
    так у вас есть кнопка редактирования, готово и скрыть для каждого div?
  • 0
    Да, у меня есть для каждого div. Поскольку я показываю список из БД и foreach, кнопка «Изменить и удалить» добавляется для каждого div, но редактируется только div с панелью идентификатора.
Показать ещё 7 комментариев
Теги:
asp.net-mvc

4 ответа

1
Лучший ответ

Идентификатор атрибута должен быть уникальным.

Если не требуется удалить идентификатор из ваших элементов html и использовать только иерархию классов и DOM для поиска и обработки вашего объекта DOM соответствующим образом.

Что-то вроде этого:

$(document).ready(function () {
    $('.edit-link').click(function () {
        $(this).siblings('.panel-title').attr('contenteditable', 'true');
        $(this).closest(".panel").find('.panel-collapse').attr('contenteditable', 'true');        
        $(this).siblings('.panel-title').attr('style', 'border:2px solid;');
        $(this).closest(".panel").find('.panel-collapse').attr('style', 'border:2px solid;');
        $(this).attr('style', 'display:none;');
        $(this).siblings('.done-link').attr('style', 'display:inline:block;');

    });

    $('.done-link').click(function () {
        $(this).siblings('.panel-title').attr('contenteditable', 'false');
        $(this).closest(".panel").find('.panel-collapse').attr('contenteditable', 'false');   
        $(this).closest('.panel-title').attr('border:none;');
        $(this).closest(".panel").find('.panel-collapse').attr('style', 'border:none;');
        $(this).attr('style', 'display:block;');
        $(this).siblings('.done-link').attr('style', 'display:none;');

    });

    $('.delete-link').click(function () {
        $(this).siblings('.panel-title').text('');
    })

});

Демо: http://jsfiddle.net/wf8yJ/8/

  • 0
    Спасибо, но это только делает заголовок редактируемым, а не другую часть div ??
  • 0
    @ RS26 исправлено, см. Редактирование; но, пожалуйста, внимательно посмотрите код и попытайтесь понять его, если вам нужны пояснения, спросите их здесь
Показать ещё 3 комментария
1

Используйте что-то вроде этого

$('.edit-link').click(function () {
    $(this).parent().attr("contentEditable",true);
    $(this).parent().next(".panel-collapse").attr("contentEditable",true);


    $(this).parent().attr('style', 'border:2px solid;');
    $(this).parent().next(".panel-collapse").attr('style', 'border:2px solid;');
    $(this).attr('style', 'display:none;');
    $(this).next(".done-link").attr('style', 'display:inline:block;');

});

Его можно использовать повторно.

0

Не указывайте id в цикле. Идентификатор HTML должен быть Unique в документе.

Лучше указать класс для определения div для каждого элемента. Обратите внимание, что идентификаторы удалены и добавлен класс для идентификации каждого div

@foreach (var item in Model)
{
 <div class="panel panel-default main-panel">
  ..
   <h4 class="panel-title newpanel">

Затем присоедините свои события, которые прослушивают классы

  $('.newpanel').on('click','.edit-link', function(){});
0

Вы можете добавить другую ссылку редактирования, поскольку ваша ссылка на редактирование делает все редактируемые div одновременно. Но, как соглашение, идентификатор на странице html должен быть только одним.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню