2016-04-01 15 views
1

Görüntümü gösterdiğim ve bu görüntünün yorumlar ve sahip adı içerdiği özel model penceremi oluşturuyorum. Bazı görüntü modellerine tıkladığımda, açılmış ve büyük resim, yazar adı, yorum vb. Göstereceğim. Problem şu anki modal'ı kapatıp tekrar açmam. Ama ilk kez modal ismi açtığımda ama sadece pencereyi kapattığımda ve tekrar opat ettiğimde isim yok. Ekran görüntülerini kontrol edin. Firewall konsolu ve GET yanıt getiri gerçek adıyla hata ayıklamaya çalışıyorum ancak bu ad kapatılıp açıldıktan sonra oluşturulmuyor. jQuery modal, kapatıldıktan ve açıldıktan sonra adı göstermiyor

ben bu kodu kullanabilirsiniz görüntüyü prview için: u ilk görüntü üzerinde görebileceğiniz gibi ben URL'lerin sonuna burada

preview: function() { 
     $('body').on('click', '#open-picture-modal', function (e) { 
      e.preventDefault(); 

      $("#photo_preview").show(); 
      var $this = $(this); 
      var guid = $this.data('guid'); 
      var photo_id = $this.data('id'); 

      $.ajax({ 
       method: 'post', 
       dataType: 'json', 
       url: baseurl + '/photo/preview', 
       data: {'photo_id': photo_id}, 
       success: function(data) { 
        Photo.photo_author_meta(photo_id); 
        $(".pleft").html('<img class="fileUnitSpacer" src="'+ $this.data('href')+data['photo_name']+'">'); 
       } 
      }); 

      //window.history.pushState(null, null, pic_url); 

      // $(".image-source").attr("src", $this.data('href')); 
     }); 
    }, 

    // Close image preview modal 
    close: function() { 
     $("body").on("click", ".close", function(e) { 
      e.preventDefault(); 
      $('#photo_preview').hide(); 
      $('#photo_preview .pleft').html('empty'); 
      $('#photo_preview .pright').html('empty'); 
     }); 
    }, 

    // Show photo author meta(name, date created, etc..) 
    photo_author_meta: function(pid){ 
     $.ajax({ 
      method: "post", 
      dataType: 'json', 
      url: baseurl + '/photo/photo_details', 
      data: {'post_id': pid}, 
      success: function(data) { 
       $("h4.photo-author-full-name").html(data['account_firstname'] +'&nbsp;'+ data['account_lastname']); 
      } 
     }); 
    }, 

Ve kalıcı olan ve set html

<div id="photo_preview" style="display:none"> 
    <div class="photo_wrp"> 
     <span class="pull-right close fa fa-times"> </span> 
     <div style="clear:both"></div> 
     <div class="pleft"></div> 
     <div class="pright"> 
      <div class="photo-author-meta"> 
       <div class="media"> 
        <a href="#" class="media-left"> 
         <img alt="64x64" data-src="holder.js/64x64" class="media-object" style="width: 64px; height: 64px;" src="test.png" data-holder-rendered="true"> 
        </a> 
        <div class="media-body photo-author-name-box"> 
         <div class="photo-author-name"> 
          <h4 class="media-heading photo-author-full-name"></h4> 
         </div> 
         <div class="photo-datetime-box"> 
          <div class="photo-date-posted"> Objavljeno: </div> 
         </div> 
        </div> 
       </div> 
      </div>  </div> 
     <div style="clear:both"></div> 
    </div> 
</div> 

On first openAfter close and again open

i modalda ad ve soyadı var. İkinci görüntüde bir kez daha açın, ancak ad ve soyad mevcut değil. Ancak, firebug konsolunu kontrol edin, veriler var ancak oluşturulmuyor.

cevap

1

çeşitli şeyler var:

1 - Sen .html() ve .empty() uğraşıyorsun:

$('#photo_preview .pleft').html(); // or .empty() 

2 - bunu yaptığında, #photo_preview .pright tüm içeriği silmek gibi :

Bu öğe mevcut değil. Bunu yaratabilir veya tüm div içeriğini boşaltamazsınız. eleman, üzerinde sadece içerik silmek

$('#photo_preview .pright').html(); // or .empty() 

hiçbir amacıyla

$('h4.photo-author-full-name').html(); // or .empty() 

için:

Bu değişebilir.

+0

Evet sağa. Teşekkürler şimdi çalışmak – Ivan

2

Kapatma yönteminiz meta verileri oluşturan HTML'yi kaldırıyor.

$('#photo_preview .pright').html('empty'); 

Bu çizgi içindeki tüm HTML boşaltıyor. Böylece, photo_author_meta(), kapatıldıktan sonra takip eden bir zaman çağrıldığında, h4.photo-yazar-tam adı artık mevcut değildir.

İlgili konular