jquery - con - web to native app
¿Cómo uso jQuery para hacer clic en evento en la aplicación web de iPhone? (7)
Cuando uso jQuery para un simple evento de clic, solo funciona para enlaces. ¿Hay alguna manera de hacerlo funcionar para los tramos, etc.?
$("span.clicked").live("click", function(e){alert("span clicked!")});
$("a.clicked").live("click", function(e){alert("link clicked!")});
El SPAN funciona en Safari pero no en Mobile Safari (en iPhone o iPad) mientras que la etiqueta A funciona en ambos.
En realidad, no necesita utilizar el evento touchstart o touchend, siempre que la etiqueta ''span'' (o cualquier otra cosa que no sea ''a'') tenga la propiedad css de:
cursor:pointer
el clic se registrará
Intenté todo y ninguno de los trucos funcionó. Resultó que no pude obtener los eventos de clics porque tenía un elemento de video debajo de mi img. los elementos de video aparentemente comen eventos de clic.
Luché con esto también. Después de jugar e intentar resolver el problema, encontré una solución simple.
Si configura el pointer
del elemento como pointer
, funciona mágicamente de nuevo con el evento de Jquery en vivo y el clic. Esto solo puede establecerse globalmente en el CSS.
Mi enfoque para resolver este malentendido en document.click.
Agregar a html después de la próxima etiqueta del cuerpo de la etiqueta
<body> <div id="overlaySection" onclick="void(0)"></div> ... </body>
Un poco de estilo para esa etiqueta
`#overlaySection { position: fixed; top: 0; left: 0; z-index: 1; width: 100%; height: 100%; background: rgba(255, 255, 255, 0); cursor: pointer; visibility: hidden; opacity: 0; content: ""; } #overlaySection.active { opacity: 1; visibility: visible; }`
Algunos empleados de JQuery
// hide overlay on document click $(''#overlaySection'').click(function(){ $(this).removeClass(''active''); });
y lo principal para activar esta superposición
$(''.dropdown > span'').click(function() {
...
$(''#overlaySection'').addClass(''active'');
...
});
Espero que este enfoque sea útil para alguien. Feliz codificación!
Necesita escuchar los eventos "touchstart" y "touchend". Agregue los oyentes con jQuery ...
$(''span'').bind( "touchstart", function(e){alert(''Span Clicked!'')} );
Es posible que desee escuchar un touchstart y touchend para que pueda verificar que el elemento seleccionado cuando tocó el dedo es el mismo que el elemento al que se lo quitó el dedo.
Estoy seguro de que probablemente haya una mejor manera de hacerlo, pero debería funcionar :)
Editar: ¡Hay una mejor manera! Ver https://.com/a/4910962/16940
Puede agregar un atributo onclick
vacío, así:
<span onclick=''''>Touch or Click Me</span>
jQuery(''span'').live(''click'', function() { alert(''foo''); });
También puede convencer al navegador de que genere eventos de clic agregando un atributo vacío de clic. Para un enfoque de correas y llaves en caso de que alguno de los enfoques deje de funcionar en cualquier actualización de iOS, puede usar algo como esto:
$("span.clicked").live("click", function(e){alert("span clicked!")})
.attr(''onclick'','''')
.css(''cursor'',''pointer'');
(suponiendo que no tiene ningún atributo onclick real que no le importe borrar)