Este código:
<div class="form-check form-switch"> <input class="form-check-input" type="checkbox" role="switch" id="switchService"> <label class="form-check-label" for="switchService">Service</label> </div> $("#switchService").on('click', function() { alert($(this).is(':checked')); });funciona en Firefox y en Chrome para Android. Pero en Firefox 93 for Desktop (Windows 7) no activa el evento.
También probé muchas sintaxis diferentes como:
$("#switchService").on('click', function() { $("#switchService").on('change', function() { $("#switchService").change(function() {Todo lo anterior funciona en todos los navegadores que probé, excepto Chrome 93 para escritorio.
¿Hay una sintaxis específica para ello? Por supuesto, javascript está habilitado, ya que otros scripts funcionan bien.
Puede evitar las dificultades de tipo "condición de carrera" mencionadas por @RoryMcCrossan si usa la delegación de eventos como se muestra aquí:
$("body").on("click","#switchService", function() { ... }) .on("change","#switchService", function() { ... }) .on("change","#switchService", function() { ... });