SORU
1 Kasım 2008, CUMARTESİ


(belge) jQuery $.hazır ve UpdatePanels?

Bir WordPress kullanmak bir UpdatePanel içinde bazı unsurları üzerinde fare üzerinde etkileri Tel kullanıyorum. Olaylar $(document).ready bağlıdır . Örneğin:

$(function() {    
    $('div._Foo').bind("mouseover", function(e) {
        // Do something exciting
    });    
});

Elbette, bu gayet iyi çalışıyor ilk sayfası dolu, ama ne zaman UpdatePanel bir kısmi sayfa güncelleme, değil koşmak ve fare üzerinde etkileri yok iş artık içinde UpdatePanel.

İlk sayfa yük üzerinde bir WordPress kullanmak kadar sadece kablo şeyler için önerilen yaklaşım, ama bir UpdatePanel kısmi sayfa bir güncelleme yangınlar her zaman ne? $(document).ready yerine ASP.NET ajax yaşam döngüsü kullanarak olmalıdır?

CEVAP
1 Kasım 2008, CUMARTESİ


Bir UpdatePanel tamamen bir güncelleme update panelin içeriğini değiştirir. Bu olaylar size abone artık bu update panel içinde yeni unsurlar var çünkü abone anlamına gelir.

Bu sorunu gidermek için ne yaptım yeniden abone her güncellemeden sonra ihtiyacım olan olaylar için. Ben ilk yük için $(document).ready() kullanın, Yeniden abone olmak için Microsoft'un PageRequestManager varsa sayfanızda bir güncelleme paneli (eğer varsa) her güncellemeden kullanın.

$(document).ready(function() {
    // bind your jQuery events here initially
});

var prm = Sys.WebForms.PageRequestManager.getInstance();

prm.add_endRequest(function() {
    // re-bind your jQuery events here
});

PageRequestManager Eğer bir update panel sayfasında ise otomatik olarak kullanılabilen bir javascript nesnesidir. Hiçbir şey bunu UpdatePanel sayfa açık olduğu sürece kullanmak için yukarıdaki kodu dışında yapmanız gerekmiyor.

Eğer daha ayrıntılı bir denetim gerekiyorsa, bu olay bağımsız değişkenleri benzer geçirir .NET olayları gerekirse olay ve sadece re-bind kaldırdı görebilirsiniz argümanlar (sender, eventArgs) geçirilir.

Burada Microsoft'un belgelerinin en son versiyonu: msdn.microsoft.com/.../bb383810.aspx


Olabilir daha iyi bir seçenek, sizin ihtiyaçlarınıza bağlı olarak, .on() jQuery kullanmak. Bu yöntem yeniden abone her güncelleme elemanları DOM için daha verimlidir. Olabilir ya da ihtiyaçlarınızı karşılamak değil bu yana, bu yaklaşım, ancak kullanın, önce belgeyi okuyun. .delegate() .on(), kullanmak için yeniden oluşturulması için mantıksız olurdu jQuery eklentileri bir yeri vardır bu gibi durumlarda, yeniden abone olmak daha iyidir.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • 8bitdigitaltv

    8bitdigitalt

    31 AĞUSTOS 2011
  • Chilla Frilla™

    Chilla Frill

    7 Aralık 2006
  • ShayLoss

    ShayLoss

    5 Kasım 2009