Belirtilen div sonuna ekleme yapma
jQuery'de append ve prepend ile belirtilen div'in içinde başa veya sona ekleme yapabiliyoruz fakat ben div'in dışına ekleme yapmak istiyorum.
Bunu nasıl yapabilirim?
Soru hatalı mı? 👎
Eğer sorunun kurallara aykırı olduğunu düşünüyorsanız lütfen bize bildirin!
Cevaplar (11)
tekrardan merhaba hocam, remove olayı çözüm sağlamadı bende birkaç yöntem denedim ama onu düzeltmeyi bıraktım.
İç mesaj kısmını yazarken karşı taraf 1 kere mesaj gönderdiğinde socket ile yaklaşık 7-9 arası mesaj geliyor. Bu neden oluşur?
Veri tabanında 1 tane.
önce .remove()
kullanarak li
elementini sildirip sonrasında normal olarak ekleyebilirsin.
if($('li#anon_376319534')){
$('li#anon_376319534').remove();
}
$('#testt').prepend(`<li id="anon_376319534">mesaj</li>`);
html() kullandığımda istediğim gibi oldu teşekkür ederim.
Fakat şöyle bir şey var sen bana mesaj gönderdiğinde istediğim gibi üstüne biniyor mesaj.
Ama senden önce eğer bir başkası bana mesaj gönderdiyse sayfayı yenilemeden sen bana mesaj attığında öteki mesajının üstüne biniyor veritabanından çekilen eski mesaj altta kalıyor
Yani senin mesajın 2 farklı şekilde gösteriyor.
val()
yerine html()
kullan.
val()
inputlarda vs. value=""
değerini almak veya değiştirmek için geçerliydi.
Bu şekilde yazdığım zaman yeni mesaj gönderdiğimde anlık yenileme yapmıyor.
div e id vererek <div id="username"></div>
veya <div data-account="username"></div>
append(), prepend(), after(), before()
yerine html()
kullanarak yapabilirsin.
$('#username').html('<div>deneme mesajıdır.</div>');
// veya
$('div[data-account=username]').html('<div>deneme mesajıdır.</div>');
Şuan bu şekilde gönderdiğim her mesaj clientte en üstte geliyor. Benim istediğim aynı kişi yeni mesaj attığında üstte gelmesi değilde o mesajın yerini almasını istiyorum.
Yani kişinin gelen kutusunu yazıyorum herkesten gelen mesajları görebildiği.
sildirmek yerine scrollu aşağı indirebilirsiniz her yeni mesaj geldiğinde scrollTop()
metodu ile
cevabınız için teşekkür ederim hocam.
Socket.io videonuzu izleyerek gerçek zamanlı chat işlemi yapıyorum. Videodaki tüm konuyu anladım fakat chat işlemi yaptığım için gelen mesaj eski mesajın üstüne geliyor bir önceki mesajı nasıl sildirebilirim?
prepend()
yerine before()
ve append()
yerine after()
metodlarını kullanarak öncesine ve sonrasına eklemeler yapabilirsin.
<div id="test">
test
</div>
<script>
let test = $('#test');
test.prepend('içinde başa yazı ekler');
test.append('içinde sonra yazı ekler');
test.before('<div class="deneme">bu eleman öncesine eklenir</div>');
test.after('<div class="deneme">bu eleman sonrasına eklenir</div>');
</script>