2012-12-21 23 views
5

我有一個像下面的代碼:

$('a.load-more').on("click",function(){ 
    $.get($('a.load-more').attr('href'), function(data) { 
    $(".next-page").remove(); 
    $('.block-grid').append(data); 
    event.preventDefault(); 
}); 

的HTML:

<li class="next-page"> 
<a href="http://example.com/ajax_all/" class="load-more">Load More →</a> 
</li> 

正如你可以看到,採用了ajax內容的URL從.load-more元素傳遞給$ get方法,然後將該內容拉入內容並將其附加到當前頁面中。

但奇怪的是,這是在Chrome中工作,但不是Firefox或Safari,並且在這些瀏覽器的檢查器中沒有js錯誤。

而不是使用ajax拉內容,它只是去url http://example.com/ajax_all/並顯示內容。

我很難說爲什麼它可以在Chrome瀏覽器中運行,而不是Safari或Firefox。

+0

您的代碼缺少'});' –

回答

5

你的腳本是無效的,或貼錯

$('a.load-more').on("click", function() { 
    $.get($('a.load-more').attr('href'), function (data) { 
     $(".next-page").remove(); 
     $('.block-grid').append(data); 
     event.preventDefault(); 

}); 

固定之後,它顯示了你的event.preventDefault();get()這是異步的內部發生。

$('a.load-more').on("click", function() { 
    $.get($('a.load-more').attr('href'), function (data) { 
     $(".next-page").remove(); 
     $('.block-grid').append(data); 
     event.preventDefault(); 
    }); 
}); 

preventDefault放在回調之外應該可以解決您的問題。

$('a.load-more').on("click", function (e) { 
    $.get($('a.load-more').attr('href'), function (data) { 
     $(".next-page").remove(); 
     $('.block-grid').append(data); 

    }); 
    e.preventDefault(); 
}); 
+0

你不應該使用全局'event'對象,你應該使用傳遞給'click'事件的事件參數。 –

+1

@RocketHazmat甚至沒有注意到,謝謝並更新。 –

+0

太棒了!而已!!謝謝:) – John

3

您的問題是單詞事件,它必須在單擊回調參數中。

試一下:

$('a.load-more').on("click", function(e){ 
    e.preventDefault(); 
    $.get($('a.load-more').attr('href'), function(data) { 
     $(".next-page").remove(); 
     $('.block-grid').append(data); 
    }); 
}); 
+0

某些瀏覽器(IE和Chrome)具有全局'event'對象,其他瀏覽器則不具有。使用jQuery提供的事件對象 –

+0

謝謝,如果上面的人沒有先到那裏,你會得到滴答聲,但是真的很感謝答案! – John