2009-12-17 6 views
0

Voici le code:livequery déclenche plusieurs fois

$(document).ready(function(){ 
    $(".menu ul li a").click(function(){ 
    curpage = $(this).attr('href'); 
    loadpage(curpage); 
    }); 
}); 

function loadpage(){ 
    switch (curpage){ 
    case "#page1": 
     getpage1(); 
    break; 
    case "#page2": 
     getpage2(); 
    break; 
    } 
} 

function getpage1() { 
    $("#content .main").load("/page1.htm"); 
    $("#content .main .new").livequery(function(){ 
     Boxy.alert("Sample Alert", null, {title: 'Alert!'}); 
    }); 
} 

function getpage2() { 
    $("#content .main").load("page2.htm"); 
} 

Donc, si je clique sur le lien pour # page1, les choses fonctionnent comme prévu. Si je clique sur le lien pour # page2, les choses fonctionnent comme prévu. Mais quand je clique sur le lien pour # page1 pour la deuxième fois, la fonction livequery se déclenchera deux fois. Je peux cliquer sur le lien pour # page2, puis cliquer sur le lien pour # page1 pour la troisième fois et la fonction livequery se déclenchera trois fois.

Je suis à court de mots sur celui-ci. S'il vous plaît aider. Peu importe le type de fonction que j'appelle dans livequery, quel qu'il soit, il tirera plusieurs fois.

Répondre

2

C'est parce que vous liez la fonction livequery chaque fois que vous chargez que peu de contenu ajaxed ...

Vous ne devez pas faire cela, c'est l'avantage d'utiliser livequery ...

Déplacer ce bit de code:

$("#content .main .new").livequery(function(){ 
     Boxy.alert("Sample Alert", null, {title: 'Alert!'}); 
    }); 

de la getpage1() et dans le bloc document.ready comme ceci:

$(document).ready(function(){ 
    $(".menu ul li a").click(function(){ 
    curpage = $(this).attr('href'); 
    loadpage(curpage); 
    }); 

    $("#content .main .new").livequery(function(){ 
     Boxy.alert("Sample Alert", null, {title: 'Alert!'}); 
    }); 
}); 
+0

Vous avez absolument raison. Je vous remercie! – Jason

1

On dirait que j'avais juste besoin d'expirer l'auditeur. Fonctionne maintenant. Voici le changement:

$("#content .main .new").livequery(function(){ 
    Boxy.alert("Sample Alert", null, {title: 'Alert!'}); 
    $("#content .main .new").expire(); 
}); 
Questions connexes