2010-12-06 5 views
5

Divamı güncellemek için .load kullandıktan sonra, bu, listeye öğe ekledim, firebug kullandım ve listenin güncellendiğini gördüm.jQuery ajax yüklendikten veya güncelleştirildikten sonra, bulamıyorum olayını kaybederim

// hide and show are css classes that display none and block respectively 

function openList(){ 
    $("#miniList").removeClass().addClass("show"); 
} 
function closeList(){ 
    $("#miniList").removeClass().addClass("hide"); 
} 
... 
$(document).ready(function() { 
    $("#miniList").mouseover(function() { 
     openList(); 
    }) 
    $("#miniList").mouseout(function() { 
     closeList(); 
    }) 
}); 

function addItemToDiv(id, ref, num) { 
    $("#miniList").load("/list/ajax_updateList.jsp", { 
     'action' : 'additem', 
     'pid' : id, 
     'pref' : ref, 
     'qty' : num 
    }); 
} 

... Tabii , bu ince ilk çalışır: Ancak, ben var benim komut dosyası js .... sayfa ilk yüklendiğinde çalıştığı mouseover olay kaybetti sayfa yüklenir, ancak listeye öğe eklediğimde, DOM güncellenir, ancak fare hareketi efektleri artık çalışmaz.

Herhangi bir düşünce memnuniyetle karşılanır. Şimdiden çok teşekkürler.

+0

gibi bir etkinlik "açık" kullanın ve CNTR kullanmak + K, çoğunlukla Sorununuz bahsettiğim üzerinde olabilir jquery live /// – kobe

cevap

2

Dynimically eklenen DOM için, jquery .live() işlevini kullanmanız gerekir. Aşağıdaki bağlantıya geçmesi Lütfen

, bunu senin sorunu çözmek düşünüyoruz:

api.jquery.com/live

@ishwebdev, hepimizin DOM çalışma süresi gibi pageload sonra eklenen elments için, koşmak yaygın bir sorundur,

// jquery.com

den: Eğer 1.4 kullanım kodunun altına jquery kullanıyorsanız bunun yerine düzenli bağlama

canlı yoluyla olayları bağlamak gerekir

$('give your selector here').live('mouseover mouseout', function(event) { 
    if (event.type == 'mouseover') { 
    // do something on mouseover 
    } else { 
    // do something on mouseout 
    } 
}); 
+0

kullanmayı deneyin. Bu cevap jquery 1.9+ için güncellenmesi gerekiyor. Bu çözüm artık çalışmıyor. – Citizen

0

@siri: Mükemmel cevap için teşekkürler, hemen benim için çalıştı.

önce::

$("#cart-items").mouseenter(function(){ 
    $('#cart-pulldown').show(); 
}); 

sonra:

$("#cart-items").live('mouseenter', function(){ 
    $('#cart-pulldown').show(); 
}); 

.live ile olay işleme hala bir Ajax çağrısı yoluyla yatan HTML değiştirmek sonra bile çalışır İşte benim alışveriş sepeti açılır örnek.

0

Seçilen yanıt artık 1.9+ jquery için çalışıyor.

yerine, kodunuzu seçerek kodu biçimlendirebilirsiniz

$(document).on("keyup", "input.assets",function(event) {... 

http://api.jquery.com/on/