2016-03-24 18 views
0

Bu iyi bilinen bir soru ama bence tatmin edici bir cevap bulamıyorum.Dinamik elemanlar üzerinde JQuery selektörü

jQuery.getScript('js/jquery.tablesorter.min.js', function (data, status, jqxhr) { 
    $('table').tablesorter(); 
}); 

Bu kod başlığındaki tarafından "sorteable" olmak için her tablo yapar (tablesorter eklentisi kullanarak): Bir sayfa bir komut dosyası yükleyen bir var. Şimdi benim sayfa, basıldığında, Ajax üzerinden içerik (aslında onlar sayfaları B, C, vb yükleyebilirsiniz birçok bağlantılar) bir sayfa B çağırır ve insert bir bağlantı vardır. Tabii ki, sayfa B sayfalarındaki tablolar, daha sonra yüklendikleri için önceki koddan etkilenmezler. Kodu dinamik olarak oluşturulmuş öğelerle ölçeklenebilir şekilde nasıl çalıştırabilirim?

ben farklı sorular (this, this, this veya this) kontrol ettikten ama hiçbiri benim potansiyel bir çözüm aramaya görünüyor. on() hakkında biliyorum, ancak burada bir etkinlik eklemeye çalışmıyorum. Ayrıca Ajax tarafından yüklenebilecek her sayfaya ekstra kod ekleyebilirim, ancak hata eğilimli (bazı sayfalarda komut dosyasını dahil etmeyi unutabilirdim) ve çok ölçeklenebilir ve zarif görünmüyor. Ben de performans konusunda biraz endişeliyim ve çok fazla on() dinleyici yaratıyorum (olmamam gerektiğinden emin değilim).

JQuery bu sorunu nasıl çözer? Bir çözüm var mı?

cevap

1
$.get('/getnewitem.aspx', function(data){ 
    // add to table. 
    $('table').tablesorter(); // run the sorter again after adding. 
}); 
+0

Bu çalışma (bunun yerine bir işlev tanımlayacağım), ancak iyi bir mimari çözüm olmasa, dağınık görünmüyor mu? Başlamak için daha fazla öğem varsa ne olur? Benim için bu çözüm, tüm bu tür kodu yapan newPage() işlevini oluşturmamı söylüyor. Ancak, masa görevlisinin eski masalarda iki kez bir olayı eklemesi olası görünüyor. – user1156544

İlgili konular