¿Por qué no funciona esta función jQuery en el sistema operativo de iPhone?
-
28-10-2019 - |
Pregunta
La siguiente jQuery funciona bien en la mayoría de los navegadores de escritorio, pero falla en los navegadores de Android y iPhone:
$('#submit_event').live('click', function() {
if ($("#event_name").attr("value") != "" && $("#event_details").attr("value") != ""){
sendEvent($("#event_name").attr("value"), $("#event_details").attr("value"));
$('#response_container').append("<div class='event_title'>"+$("#event_name").attr("value")+"</div><div class='event_details'>"+$("#event_details").attr("value")+"<div class='comment'>Comment</div><textarea class='comment_area'></textarea><div id='post_comment'>Post</div></div>");
}
});
El #submit_event es solo la identificación de un div. Cuando se hace clic, ejecuta la función en los navegadores de escritorio, pero no en Android o iPhone.
Saludos,
Taylor
Solución
Podrías probar un código más eficiente:
$('#submit_event').live('click', function() {
var eName = $("#event_name").attr('value');
var eDetails = $("#event_details").attr('value');
if (eName && eDetails) {
sendEvent(eName, eDetails);
$('#response_container').append("<div class='event_title'>" +
eName +
"</div><div class='event_details'>" +
eDetails +
"..."
);
}
});
Otros consejos
Ok encontré mi respuesta,
Es solo un error en el safari móvil.
Todo lo que necesita hacer es agregar onClick = '' a cualquier elemento al que vincule la función en vivo y funcionará.
Sí. El evento Live no funcionará con elementos como TD. Funcionará con el elemento HTML como la etiqueta de anclaje, el botón, etc., por lo que si desea aplicar el evento de clics usando el evento .live de jQuery, primero debe agregar el atributo ondclick = "" usando el método jQuery .Attr en su elemento TD y luego aplicar. Evento en vivo para vincular el evento con su elemento TD. Para obtener más detalles, visite el blog a continuación
http://skillfulness.blogspot.com/2010/11/workaround-for-jquery-live-event.html
Si también está utilizando jQuery Mobile, es posible que desee probar
$('#submit_event').live('tap', function() {}