Perché questa funzione jQuery non funziona sul sistema operativo per iPhone?
-
28-10-2019 - |
Domanda
Il seguente jQuery funziona bene nella maggior parte dei browser desktop, ma fallisce sui browser Android e 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>");
}
});
#Submit_event è solo l'ID per un div. Se si fa clic, esegue la funzione sui browser desktop, ma non su Android o iPhone.
Saluti,
Taylor
Soluzione
Potresti provare un codice più efficiente:
$('#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 +
"..."
);
}
});
Altri suggerimenti
Ok ho trovato la mia risposta,
È solo un bug in Safari mobile.
Tutto quello che devi fare è aggiungere onClick = '' a qualsiasi elemento a cui si lega la funzione live e funzionerà.
Sì. Evento non funzionerà con elementi come TD. Funzionerà con l'elemento HTML come tag di ancoraggio, pulsante ecc. Quindi se si desidera applicare clicca evento usando .live evento di jQuery è necessario prima aggiungere onClick = "" Attributo utilizzando il metodo jQuery .attr sull'elemento TD e quindi applicare. Evento in diretta per legare l'evento con il tuo elemento TD. Per maggiori dettagli, visitare il blog di seguito
http://skillness.blogspot.com/2010/11/workaround-for-jquery-live-event.html
Se stai usando anche JQuery Mobile, potresti provare
$('#submit_event').live('tap', function() {}