Обработчик события щелчка jQuery вызывается дважды для флажка

Обычно, когда вы создаете приложения с использованием C # и .NET framework, вы не будете использовать INI-файлы. Чаще всего хранить настройки в файле конфигурации на основе XML или в реестре. Однако, если ваше программное обеспечение обменивается с устаревшим приложением, проще использовать его конфигурационный файл, а не дублировать информацию в другом месте.

.NET framework не поддерживает использование файлов INI напрямую. Однако вы можете использовать функции Windows API с помощью служб Invocation Services (P / Invoke) для записи и чтения из файлов. В этой ссылке мы создаем класс, который представляет файлы INI, и использует функции Windows API для управления ими. Пожалуйста, перейдите по следующей ссылке.

Чтение и запись файлов INI

20
задан dda 17 April 2017 в 03:10
поделиться

5 ответов

Прочитав свой вопрос еще раз, я нашел способ его решить.

Просто добавьте «ввод» в селектор jQuery:

<script type="text/javascript">
$(document).ready(function() {
        $('.test input').click(function() {
                alert("click")
        })
});
</script>
8
ответ дан 29 November 2019 в 22:25
поделиться

Я думаю, это из-за с атрибутом для вызывает событие щелчка для элемента или , т.е. ассоциируется при нажатии.

Итак, в коде jQuery вы настраиваете обработчик событий щелчка как для , так и для внутри . При нажатии на будет запущен обработчик события щелчка, который вы настроили для ярлыка, затем обработчик события щелчка, настроенный на

20
ответ дан 29 November 2019 в 22:25
поделиться

What you are seeing is event bubbling. The click event is first handled by the label and is then passed on to the checkbox. You get one alert for each. To prevent event bubbling you need to return false in your click handler.

$(document).ready(function() {
        $('.test').click(function() {
                alert("Click");
                return false;
        })
});

However while this prevents event bubbling it also has the undesirable side effect of preventing the checkbox from changing state. So you'll need to code around that.

2
ответ дан 29 November 2019 в 22:25
поделиться
$(document).ready(function() {
    $('.test').click(function(event) {
                    event.stopImmediatePropagation();
                    alert("Click");
                    })
                 }
              );

Мне удалось заставить свой код заработать, остановив событие «Распространение». Это не повлияло на изменение статуса флажка.

14
ответ дан 29 November 2019 в 22:25
поделиться

Я только что испытал то же самое, но не уверен, что возникновение пузырей событий вызывает мою проблему. У меня есть настраиваемый элемент управления в виде дерева, и при открытии элемента я использую $ (id) .click () , чтобы прикрепить обработчик ко всем элементам определенного типа.

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

$('img.load_expand').unbind("click").click(function()
{
  // handler
});
58
ответ дан 29 November 2019 в 22:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: