Pourquoi cette fonction jquery ne fonctionne-t-elle pas sur iPhone OS?
-
28-10-2019 - |
Question
La jquery suivante fonctionne correctement dans la plupart des navigateurs de bureau, mais échoue sur les navigateurs Android et 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>");
}
});
Le #submit_event est juste l'ID d'un div.Lorsqu'on clique dessus, il exécute la fonction sur les navigateurs de bureau, mais pas sur Android ou iPhone.
salutations,
taylor
La solution
Vous pouvez essayer un code plus efficace:
$('#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 +
"..."
);
}
});
Autres conseils
Ok, j'ai trouvé ma réponse,
C'est juste un bug dans le safari mobile.
Tout ce que vous avez à faire est d'ajouter onclick= '' à tout élément auquel vous liez la fonction live et cela fonctionnera.
Oui, l'événement .live ne fonctionnera pas avec un élément comme td.Cela fonctionnera avec un élément html comme une balise d'ancrage, un bouton, etc. Donc, si vous voulez appliquer un événement click en utilisant l'événement .live de jQuery, vous devez d'abord ajouter l'attribut onclick="" en utilisant la méthode jquery .attr sur votre élément td, puis l'appliquer.live event pour lier l'événement avec votre élément td.Pour plus de détails, veuillez visiter le blog ci-dessous
http://skillfulness.blogspot.com/2010/11 / contournement-pour-jquery-live-event.html
Si vous utilisez également jquery mobile, vous voudrez peut-être essayer
$('#submit_event').live('tap', function() {}