2016-04-07 31 views
0

Dosya adlarını bir veritabanından almak için bir AJAX çağrısı kullanıyorum. Daha sonra aynı ada sahip görüntülerle bir atlıkarınca doldurmak için kullanılır.Aynı değişkenin birden çok örneği

Web uygulamam, dokunduğunda, AJAX'ı yeniden yükler ve veritabanından farklı bir dosya adları kümesini kullanır ve sonra da karuseli yeniden doldurur.

Bulduğum şey web uygulaması başlangıçta yüklendiğinde, karusel iyi çalışıyor, ancak sekmelerden herhangi birine dokunduğumda, karusel yanlış çalışmaya başlar, ilk kez dokunduğumda ve ardından karuseli ilk kez kullandığımda atlı karınca, iki görüntüde zamanda hareket eder, ikinci bir dokunuş ve görüntüler, her seferinde üç kez hareket eder, vb.

Konsolu kontrol edersem, çağrıyı takip ettiğimde, karuseldeki sol veya sağ oka tıkladığımda, sanki aynı değişkenin iki örneği var gibi, ya da her iki AJAX çağrısı çağrılıyormuş gibi bir şekilde. Resim demek istediğimi göstermek için.

Console log

Gördüğünüz gibi, ilk yükleme herşeyi takip sonraki çağrılar önceki çağrısından sayım devam sanki öyle yapılır ve ikincil sayım da yeni verilerle ilişkili başlar, ancak bir kez gayet veya kaç arama yapıldığına bağlı olarak üçüncü veya dördüncü veya beşinci.

$('.tabs-nav li').on('click', function() { 
    tabName = $(this).html(); 
    place = 0; 
    products = getProductDetails(selected); //AJAX call 
    data = dealWithData(products, place); //Deferred object that works data 
}); 
+0

, ayrıca kod biraz sağlayabilir veya olmalıdır:

var place,count $(".tabs").on('click',function(){/*shares same place & count */}); 

böyle olmazdı daha iyi bir örnek daha iyi anlayabilmemiz için – juvian

+0

@juvian tahmin etmek yerine ne olduğunu daha iyi anlayabilirim. – Ryan

+0

Eşzamansız çağrıları eşzamanlı olarak işleme tabi tutuyorsunuz, ancak kod eksikliğinden bahsetmek zor. – epascarello

cevap

0

Kapsam belirleme sorunu yaşıyormuşsunuz gibi görünüyor. En kolay yol, mantığınızın kapanmasıdır, böylece değişkenleriniz belirli bir sekmeye yönlendirilir. Bunun yerine böyle bir şeye: karşılaştığınız sorunun açıklaması oldukça iyi yapılır iken

$(".tabs").each(function(){ 
    var place,count 
    $(this).on('click',function(){/*each has their own place,count*/}); 
}); 
+0

Sanırım haklısın. 'Click' işleyici kodumu ekledim. Sorunun nerede olduğunu varsayalım? – Ryan

+0

Sanırım her defasında sağladığınız kodda tıklandığında yer 0'a ayarlandı –

İlgili konular