2012-12-21 7 views
5

ben kod aşağıda gibi olması:

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

gördüğünüz gibi, ajax içeriğinin url alır .load-daha fazla öğe, daha sonra içeriği çeker ve geçerli sayfaya ekler, $ get yöntemine geçer.

Garip olan şu ki, bu Chrome'da çalışıyor ancak Firefox veya Safari'de çalışmıyor ve bu tarayıcıların denetçisinde js hatası yok.

Ajax kullanarak içeriği çekmek yerine, yalnızca URL http://example.com/ajax_all/'a gider ve içeriğini gösterir.

Neden Safari'de veya firefox'ta değil, Chrome'da çalışacağıyla ilgili şaşkınım. sizin event.preventDefault(); eşzamansızsa get() iç oluyor ki gösterdiğini

+0

Kodunuz eksik bir '});' Sen küresel 'event' nesne kullanmamalısınız –

cevap

5

Senaryoda geçersiz veya düzelttikten sonra

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

}); 

yanlış yapıştırılan olduğunu.

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

sorununuzu çözecektir çağrı arka preventDefault dışında yerleştirmek.

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

, sen' click' olaya geçirilen olay parametresini kullanmalısınız. –

+1

@RocketHazmat, teşekkürler ve güncellenmiş olduğunu bile fark etmedi. –

+0

Parlak! Bu kadar!! Teşekkür ederim :) – John

3

Sorununuz sözcük olaydır, tıklama geri çağırma parametrelerinde olması gerekir.

o deneyin:

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

Bazı tarayıcılar (IE ve Chrome) global bir 'event' nesnesine sahiptir, diğerleri yoktur. jQuery tarafından sağlanan olay nesnesini kullanın –

+0

Teşekkürler, yukarıdaki adam ilk önce orada olmasaydı kene olurdu ... Gerçekten de cevabı takdir et! – John