2016-04-09 8 views
0

Sayfayı yenilemeye gerek duymadan işlemleri gerçekleştirmek için Twitter API ve AJAX isteklerine erişmek için PHP kullanıyorum.jQuery Gövde Öğesine Eklenmiş Birden Çok Tıklama Etkinliği (AJAX yüklü içerik)

Geçerli kurulumda, sayfa ilk yüklendiğinde boştur. JQuery'yi kullanarak, document.ready(), bir zaman çizelgesi kaplayan bir PHP sayfasına yönlendiren bir AJAX isteğini gerçekleştirir, bir dizede HTML yapısını oluşturur ve bunu AJAX başarı işlevine döndürür. Daha sonra HTML olarak işleyen bir div'a ekliyorum.

Yaşadığım sorun, çok fazla dinamik olarak oluşturulmuş içeriğim olduğu için jQuery'deki tıklama etkinliklerim birbirinin üzerine yazıyor. body öğeye bağlı olan .on("click") olayım var (document.ready() üzerinde yok çünkü).

$('body').unbind('click').on('click', '.element', function(e){...} 

Bunun sonucu kodunda aşağı uzak olan olay dinleyicisi çalıştığını, ancak değil üstünde olan diğerleri. Bu sorunu nasıl çözebilirim? İlk düşüncem e.stopPropogation ya da e.stopImmediatePropogation idi, sanırım daha önce benzer bir durumda kullandım, ama emin değilim.

Tavsiye için şimdiden teşekkür ederiz!

+0

sen. Senin '$ ('beden') koyun ('klik') kesin değil neden. Üzerine ('.element' fonksiyonunu (e 'tıklayın') {...} 'kök öğesinde, böylece dinamik içerik yüklendikten sonra yeniden başlamıyor? – Shayan

+0

Ne sorduğunuzu net olarak anlayamıyorsanız, önceki tıklatma işleyicilerinin neden _all_ 'i kaldırdığınızda daha fazla işlem yapmadığını gerçekten merak ediyor musunuz? yeni bir tane eklemeden önce…? – CBroe

+0

@shayanypn “$ ('html')' ye bağlamaya devam etmeyin, yine de $ ('body') 'ile aynı sorunlara sahip misiniz? – LakeJeffler

cevap

0

Sunucuya yapılan istek tamamlandıktan sonra olayları ajax success() işlevindeki öğelere bağlamayı deneyin.

AJAX

 $.ajax({ 
      url : 'process.php', 
      data: { ... }, 
      success : function(data) { 
       document.getElementById("my-element").innerHTML = data; 
       $('#loaded-element').bind('click', function(){ 
        ... 
       }); 
      } 
     }); 
+0

Bu çözüldü t Kodun üst kısmında tıklanan olay için sorun, ama şimdi (daha önce çalışmış olan) altta olan, şimdi çalışmıyor. :( – LakeJeffler

+0

** EDIT: ** Artık tıklama olaylarımı fiili seçicilere bağlayabileceğimi fark ettim, çünkü bu elemanlar sayfaya eklendikten sonra ekleniyorlardı, şimdi BOTH işe yaradı. – LakeJeffler

İlgili konular