(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
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.
JQuery belge.hazır vs ™ deviceready...
Requirejs(belge) eklenti vs Jquery $do...
JQuery resim belge çalıştırmadan önce ...
jQuery - kötü birden fazla belge) $var...
belge kullanıyoruz.jQuery: hazır haric...