на лету редактирование элементов

0

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

Однако, как только я нажимаю поле inout, он добавляет больше кода для другого поля ввода. Имеет ли это смысл?

Вот мой jQuery:

$('.editTagline').click(function() {
  var content = $(this).html();
  $(this).html('<input type="text" value="' +content+ '">');    
});

Вот JSFiddle: http://jsfiddle.net/nSY4Y/, если вы щелкнете по слову tagline, а затем попробуйте ввести текст в текстовое поле ввода, вы увидите проблему.

Теги:

3 ответа

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

Вы можете использовать one(), таким образом, он работает только один раз для каждого элемента

$('.editTagline').one('click', function () {
    var content = $(this).html();
    $(this).html('<input type="text" value="' + content + '">');
});

FIDDLE

  • 0
    Конечно, дох! Спасибо. Я приму ответ после того, как прошло десять минут :)
1

Я удалю класс после замены содержимого:

$(document).on("click", ".editTagline", function() {
  var content = $(this).html();
  $(this).html('<input type="text" value="">');
  $(this).find("input").val(content);
  $(this).removeClass("editTagline");
});

играть на скрипке

1

Вы можете использовать от:

$('.editTagline').on('click', function () {
    var content = $(this).html();
    $(this).html('<input type="text" value="' + content + '">');
    $(this).off('click');
});

демонстрация

Ещё вопросы

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