Почему один клик генерирует несколько кликов?

0

Я добавил button динамически. Но когда я нажимаю на него, он запускает несколько click и вызывает связанную функцию с alert('clicked'); несколько раз, а не один раз.

Можете ли вы сказать мне, почему и как я могу это исправить?

Код

 var root = document.getElementById('current_page');
 var button = document.createElement('input');
 button.type = 'button';
 button.title = 'Add new book to list';
 button.className = 'btn btn-primary';
 button.id = 'get_new';
 button.setAttribute('value', 'No Thanks,Get New');
 button.setAttribute('style', 'position:relative; top:-5px;left:900px');
 root.appendChild(button);

укротитель

$('body').on('click', '#get_new', function () {
            alert('clicked');
});
  • 1
    Итак ... какой у тебя вопрос?
  • 3
    Я думаю, он спрашивает, почему функция с alert('clicked'); срабатывает более одного раза по одному клику.
Показать ещё 16 комментариев
Теги:

1 ответ

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

Поскольку вы уже используете jQuery, вы также можете создать элемент с помощью jQuery и связать функцию щелчка при его создании. Вероятно, это решит все, что вызывает проблему с двойным стрельбой.

Скрипт: http://jsfiddle.net/f9PX4/

function myFunction() {
    alert('clicked');
}

$(function() {
    var button = $("<input>");
    button.attr("type", "button")
        .attr("title", "Add new book to list")
        .attr("id", "get_new")
        .css({ position: "relative", top: -5, left: 900 })
        .val("No Thanks,Get New")
        .addClass("btn btn-primary");
    button.click(function() {
        return myFunction();
    });
    $("#current_page").append(button);
});
  • 0
    Это не обязательно. Код OP на самом деле работает нормально и использует делегирование, что является хорошей практикой.

Ещё вопросы

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