2009-12-17 63 views
0

下面的代碼:的liveQuery觸發多次

$(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"); 
} 

所以,如果我點擊#1頁的鏈接,事情達到預期效果。如果我點擊#page2的鏈接,事情按預期工作。但是當我第二次單擊#page1的鏈接時,livequery函數將會觸發兩次。我可以點擊#page2的鏈接,然後第三次點擊#page1的鏈接,livequery功能將會啓動三次。

我在這一個字的損失。請幫忙。不管我在livequery中調用什麼樣的函數,無論它是多少次,它都會觸發多次。

回答

2

那是因爲你每次加載的ajaxed內容的位時間綁定的liveQuery功能...

你沒有這樣做,這是使用的liveQuery的優勢...

移動該位的代碼:

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

getpage1()並進入document.ready塊,像這樣:

$(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

你是絕對正確的。謝謝! – Jason 2009-12-17 20:33:21

1

看起來我只是需要過期聽衆。現在工作。這是變化:

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