Прослушивание событий JQuery сработало дважды - PullRequest
0 голосов
/ 16 января 2019

Я работаю с приложением .NET Core 2, которое также использует JQuery.

В html-кнопке я выполняю функцию JQuery для создания события click. Эта функция почему-то срабатывает дважды. Кто-нибудь может помочь мне понять, почему?

Заранее спасибо !!

HTML код:

<div class="menu">
        <button class="btn btn-default" id="seeds">Seeds</button>
</div>

JQuery (внутри файла .js):

$("body").on("click", "#seeds", function () {
    alert('click fired');
});

Ответы [ 4 ]

0 голосов
/ 16 января 2019

Спасибо всем за ваш вклад и помощь. Теперь я запускаю функцию непосредственно на элементе, как вы все предложили.

Однако я обнаружил проблему. Как я дурачок ?? У меня была ссылка на мой файл .js дважды в моем HTML-файле макета. Duuh для меня!

Еще раз спасибо всем, что нашли время помочь мне !!

Лучший !!

0 голосов
/ 16 января 2019

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

И вы можете зарегистрировать событие непосредственно для элемента, например:

$("#seeds").on("click", function(){
    alert('click fired');
});

Или вот так:

$("#seeds").click(function(){
    alert('click fired');
});
0 голосов
/ 16 января 2019

Может быть, вы использовали один и тот же идентификатор дважды. Поэтому, пожалуйста, проверьте этот идентификатор.

Вы также можете использовать приведенный ниже код,

$("#seeds").click(function(){
    alert('click event');
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="menu">
        <button class="btn btn-default" id="seeds">Seeds</button>
</div>
0 голосов
/ 16 января 2019

Имейте в виду, что вы можете зарегистрировать несколько обработчиков событий для одного и того же события в jQuery. Таким образом, если ваш обработчик зарегистрирован дважды, ваш обработчик будет запускаться при событии одного клика. Вы можете удалить слушателя, используя метод off

$("body").off("click");

Но я бы предложил зарегистрировать обработчик прямо на вашем элементе:

$("#seeds").on("click", function(){
    alert('click fired');
});
...