2009-02-20 7 views
0

J'ai une simple page HTML qui ressemble à ceci:problème JavaScript/JQuery sur Internet Explorer 7

...<div id="main"> 
    <a href="#">Click here!</a> 
</div>... 

J'ai un morceau de JavaScript jQuery dans l'en-tête qui ressemble à ceci:

<script type="text/javascript"> 
    $(document).ready(function() { 
     DoHello(); 
    }); 

    function DoHello() 
    { 
     $("div#main a").text("Click here!"); 
     $("div#main a").attr("onmouseup", "javascript:alert('Hello!');"); 
    } 
</script> 

Lorsque je clique sur le lien HTML dans FireFox, je reçois une alerte disant "Bonjour!". Pourquoi cela ne fonctionne-t-il pas dans IE7/8?

Lorsque je regarde le DOM (dynamiquement) construire dans IE, je peux voir que le "onmouseup" est présent mais il n'est jamais appelé. J'ai essayé de remplacer "onmouseup" avec "onclick" - même problème ...

Répondre

7

Vous ne devriez pas utiliser le pseudo-protocole JavaScript pour quelque chose.

Cela devrait fonctionner:

function DoHello() 
{ 
    $("div#main a") 
     .text("Click here!") 
     .mouseup(function(){ 
      alert('Hello!'); 
     }); 
} 
5

N'utilisez pas les événements expando, utilisez jQuery!

$("div#main a").mouseup(function(){ alert('Hello!') }); 
3

au lieu d'ajouter l'événement onmouseup comme ça pourquoi ne pas vous suffit d'utiliser la méthode jQuery comme ceci:

$("div#main a").mouseup(function() { 
    alert("hello"); 
}); 

devrait fonctionner :) pour plus d'informations consultez - http://docs.jquery.com/Events/mouseup

1

Vous devez utiliser la fonction bind comme ceci:

function DoHello(){ 
$("div#main a").bind("mouseup", function(e){ 
    alert("Hello!"); 
}); 
} 
Questions connexes