2011-03-29 2 views
1

Je rencontre des problèmes de périphériques mobiles avec la div suivante, lien et jQuery:Mauvais événement jQuery tir à partir d'appareils mobiles

<div id="div1" style="width:300px;height:100px;"> 
    <a href="#" id="link1">Link</a> 
</div> 

<script type="text/javascript"> 
$('#link1').click(function() { 
    alert('Clicked link'); 
}); 

$('#div1').mouseenter(function(){ 
    alert('Entered div'); 
}); 
</script> 

D'un PC si vous survolez div1, il alerte « div Entrée ». Lorsque vous cliquez sur link1, il alerte "Lien cliqué". Parfait.

Cependant, à partir d'un périphérique mobile, le survol ne fonctionne pas. Ce qui est correct, mais quand un utilisateur clique sur link1, il alerte d'abord "Entred div". Si ils cliquent à nouveau, il alerte "Lien cliqué".

Comment puis-je l'obtenir pour alerter "Lien cliqué" la première fois qu'un utilisateur clique sur link1 à partir d'un périphérique mobile sans sacrifier le fonctionnement à partir d'un ordinateur de bureau?

Répondre

0

peut vous donner un essai comme ci-dessous,

si vous dites return false, il peut arrêter la propagation, mais je ne suis pas sûr à 100% avec devices..just mobile donnent un essai

$('#link1').click(function() { 
    alert('Clicked link'); 
    return false; 
}); 
1

Bienvenue sur les appareils mobiles :)

Vous devez détecter les fonctionnalités si vous utilisez un périphérique tactile et ne pas lier vos événements mouseenter, ou vous lier directement aux événements tactiles et les empêcher de se convertir en clics et mouseenters.

0

J'ai eu le même problème. Je viens mis en œuvre les ...

var is_ios = navigator.userAgent.toLowerCase().match(/(iphone|ipod|ipad)/); 

if(!is_ios){ 

    // bind my hover behaviours here 

} 

ajouter un else que si vous voulez faire quelque chose spécifiquement pour iPhone/iPad/iPod. Dans mon cas, je n'avais pas besoin de le faire.