2012-05-19 18 views
5

olarak adlandırılan bir öğe ekleyin. Her "like" düğmesinden (krom uzantısı) sonra bir öğe eklemek istiyorum. Mesajlar, sayfayı yenilemeden haber akışına eklendiğinden, bir etkinlik dinleyicisi "DOMNodeInserted" eklemem gerekiyor. Ama içerisine after() işlevini koymaya çalıştığımda, işe yaramıyor."DOMNodeInserted" olayı

Kodu: Ben her sayfasını çöküyor $("#contentArea")document değiştirmek

$("#contentArea").addEventListener("DOMNodeInserted", function(event) { 
     $(".like_link").after('<span class="dot"> · </span><button class="taheles_link stat_elem as_link" title="תגיד תכל&acute;ס" type="submit" name="taheles" onclick="apply_taheles()" data-ft="{&quot;tn&quot;:&quot;&gt;&quot;,&quot;type&quot;:22}"><span class="taheles_default_message">תכל&acute;ס</span><span class="taheles_saving_message">לא תכלס</span></button>'); 
     $(".taheles_saving_message").hide(); 
    }); 

.

cevap

7

jQuery bir olay dinleyicisi eklemek istiyorsanız, bu yöntem değildir, corect yolu daima olmalıdır: bu düşünce ile

$(document or window).bind(your_event_name, function(event) { your_callback }); 

yazabilirsiniz:

$(document).bind('DOMNodeInserted', function(event) { 

    alert('inserted ' + event.target.nodeName + // new node 
      ' in ' + event.relatedNode.nodeName); // parent 

}); 

veya DOM'a her düğüm eklendiğinde yapmanız gerekenleri yapın. Eğer addEventListener kullanmak istiyorsanız bilginize


, Javascript'i ve jQuery ovasını kullanmak gerekir.

document.addEventListener("DOMNodeInserted", function() { 
    // your code 
}, false); 

Düzenleme: jQuery 1.7 üzerine gibi, onun yerine '.sistem' fonksiyonunu kullanın: http://api.jquery.com/on/


(işe yaradı varsa) yönteminin çıkageldi başka hata olduğunu sen misin düğümünü düğümüne ekleyerek uygulamanızı bozar ve DOMNodeInserted (bir düğüm eklediğiniz için) çağırın ve bu düğümü tekrar ekleyiniz ve DOMNodeInserted numaralı telefonu yeniden arayın.

Eğer ne olup bittiğini görebilirsiniz

...

Sana doğru yönteme dinlemek önermek ve ekleriz orada span ...

+0

, hangi işlevi ben sonra() jQuery yerine kullanması gereken örnek aşağıda gibi addEventListner altına koymak gerekir? –

+0

dinleyicinizin içinde "DOMNodeInserted" için bir düğüm ekleyemezsiniz veya sonsuz bir döngü elde edersiniz ... .after() işlevini kullandıktan sonra, yeni düğümü eklemek için, "DOMNodeInserted" yeniden çağrılır. Bir DOM düğümü eklediniz) ve benzeri, ve üzerinde ... – balexandre

+0

evet haklısınız, herhangi bir öneriniz var mı? Ben zaten setInterval() ... –

0

bu koşular altında kod sadece bir kez sorunla karşı karşıya eğer jQuery .sistem() işlevinde sonra senin ikinci yöntemi kullanırsanız //

document.addEventListener('DOMNodeInserted', function(e) { 
    $("selector").on('DOMNodeInserted', function(e) { 
     //your code which you want to execute each time DOMNodeInserted 
    }); 
});