2008-12-27 20 views
11

Ben şu anda yerine gizli div solma, ben DOMjQuery ile bir DOM öğesini nasıl ekleyebilirim?

yeni div ekleyebilir böylece bu kodu değiştirebilir nasıl gizli div.a_type

göstermek için kullanıyorum Bir işlevi var Tamam

 
jQuery(function(){ // Add Answer 

    jQuery(".add_answer").click(function(){ 
     if(count >= "4"){ 
     alert('Only 4 Answers Allowed'); 
     }else{ 
     var count = $(this).attr("alt"); 
     count++; 
     $(this).parents('div:first').find('.a_type_'+count+'').fadeIn(); 
     $(this).attr("alt", count); 
    } 

    }); 

}); 

, şimdi bu dizildi olduğuna göre, ben bir soru daha,

var ben bir düğmeye tıklandığında ise sokulan div 's kaldırır fonksiyonu vardır. Artık ek div'ler pageload'da dom'a yüklenmediği için çalışmıyor. Şimdi bunları kaldırmak için işlevi nasıl tetikleyebilirim?

jQuery (fonksiyonu() {// Gizle cevap

jQuery(".destroy_answer").click(function(){ 
    $(this).parents("div:first").fadeOut(function(){ $(this).remove() }); 
    var count = $(this).parents('div:first').parents('div:first').find('.add_answer').attr("alt"); 
    count--; 
    $(this).parents('div:first').parents('div:first').find('.add_answer').attr("alt", count); 

}); 

});

+0

Hızlı notu PHP bir önişlemci olduğundan size javascript aracılığıyla PHP baskı olamaz HTML yazdırabilirsiniz iken. –

+0

Bilmekte fayda var ... seçmeme göre php oturum verilerini yazdırmaya çalıştığımı nasıl öneriyorsunuz? – adam

+0

, jQuery AJAX araçlara sahiptir (AJAX kullanarak php oturum verilerini alın ben bunları kullanmak için benim anser güncelleyeceğiz. –

cevap

9

Son div'den sonra eklemeye ne dersin.

$('.a_type:last').insertAfter('<div class="a_type">content</div>'); 

Sen somefile.php bir AJAX çağrısı aracılığıyla bilgi alabilirsiniz
düzenlemek, somefile sonra div istediğiniz içeriği dönmelidir:

$.get('path/to/somefile.php', function(data){ 
$('.a_type:last').insertAfter('<div class="a_type">' + data + '</div>'); 
}); 

Somefile.php olmalıdır böyle bir şey:

<?php 
session_start(); 
$sessiondata = $_SESSION['data']; 
echo "Whatever you type here will come inside the div bla bla $sessiondata"; 
?> 

düzenlemek
Tamam, şunu deneyin: sizin için hâlâ gerekli olursa

 
jQuery(function(){ // Add Answer 

jQuery(".add_answer").click(function(){ 
    if(count >= "4"){ 
    alert('Only 4 Answers Allowed'); 
    }else{ 
    var count = $(this).attr("alt"); 
    count++; 
    $('.a_type_'+count-1+'').insertAfter(' 
     Place content back here'); 
    $(this).attr("alt", count); 
} 

}); 

}); 

Sadece AJAX karıştırın.

+1

InsertAfter yüzden daha önce önerilen ve. Teşekkür – adam

+0

hm ok çalıştı yerine olarak 'sonra' çalıştı işe yaramadı garip, ben olsa o eklenmişti, ama gerçekten önemli değil, Eğer kullandığınız anser ise o zaman kabul etmelisiniz. –

2

Düğmeye tıklandığında eklenen div'leri kaldıran başka bir işlev var. Artık ek divlerin pageload'da dom'a yüklenmediği görülüyor. Bunları kaldırmak için işlevi nasıl tetikleyebilirim?

En son sorununuzu çözmek için üç seçeneğiniz vardır. onlar eklendiğinde

  1. Sen liveQuery kullanabilirsiniz, bir jQuery eklentisi DOM öğelerine olay işleyicileri yeniden uygular. Not: Bu eklenti, yalnızca yerel jQuery DOM ekleme/hazırlama işlevlerini (ekleme/ekleme/sonraki/önceki/insertBefore/insertAfter vb.) Kullanıyorsanız etkili olacaktır.

  2. Alternatif basitçe işleyicileri yeni elemanlar eklenir, elle ... (değil en iyi seçenek)

  3. üçüncü ve bence en iyi seçenek müthiş kullanmaktır yeniden başvurabilir olay delegasyonunun gücü.Yaptığınız şey, herhangi bir ebeveyne bir olay işleyicisi ekler; örneğin, liste öğelerini sıralanmamış bir listeye dinamik olarak ekleyecek olursanız, etkinlik işleyicilerini her ek öğe için sürekli olarak yeniden uygulamak yerine, olay işleyicisini basitçe ekleyebilirsiniz ebeveyne ve sonra olayın hedefi bulmak:

    $('ul').click(function(e){ 
        var target = e ? e.target : window.event.srcElement; 
        if(target.nodeName.toLowerCase() === 'li') { 
         // Do Stuff... 
        } 
    }) 
    
İlgili konular