2016-04-11 12 views
1

Kullanıcıya tıkladığında ne yapacağını belirten kendi "verilerimi" koyduğum bir div içinde küçük bir numara yaptım.Düğmem yayınlama olayım neden ana şirkete yönelik?

<div class="col-lg-12" data-hqf-switch="$.pt().pv()/Xd/$.pt()/Xu"> 
    <h4>25 mars 2016 22:07 - You wrote...</h4> 
    <p>J'ai refusé votre invitation</p> 
    <button type="button" class="btn btn-default" 
      data-toggle="modal" 
      data-target="#modal-msg-7-24" title="Répondre"> 
     <i class="fa fa-envelope-o"></i>&nbsp;Répondre 
    </button> 
    <div class="modal fade" id="modal-msg-7-24" tabindex="-1" 
     role="dialog" 
     aria-labelledby="Envoyer un message" aria-hidden="true" 
     style="display: none;"> 
     <div class="modal-dialog"> 
      <div class="modal-content"> 
      </div> 
     </div> 
    </div> 
    <button class="btn btn-warning" 
      data-hqf-switch="$.pt().pt().pv()/Xd/$.pt().pt()/Xu"> 
     Fermer 
    </button> 
</div>     

en önemli ilk: Ben böyle bir şey var benim HTML Şimdi

$('[data-hqf-switch]').click(function() { 
    var t = $(this).attr('data-hqf-switch').split('/'), 
     i = 0; 
    if (t % 2) { 
     alert('Burn the dev. Its the dev. himself who wrote that.'); 
     return; 
    } 
    while (i < t.length) { 
     var ev = sw(t[i++], '$')+'.'+sw(t[i++], 'd')+';'; 
     eval(ev); 
    } 
}); 

:

Benim JavaScript kodu (anlaşılırlık adına çıkarılmıştır kod sürü) gibi görünüyor button: tıklandığında düğmeden hemen sonra bildirilen kalıcı iletişim kutusunu gösterir. Ürünün var butonuna tıkladığınızda düğmesini ve divdiv olay çok başlatılır "çevreleyen" çünkü üzerinde tıklayın gibi

Her şey dışında iyi çalışması gerekir.

Neyi eksik?

+0

'alert()' içindeki dizginiz, bir sözdizimi hatasıyla sonuçlanacak yanlış eşleme tırnaklarına sahiptir. Sen özledim neredeyse imkansız gibi hataları yapar gibi sözdizimi vurgulama ile bir editör kullanarak bakmanızı öneririm. Yayılmasını durdurmak için, olayı işleyiciden alın ve üzerinde 'stopPropagation()' öğesini çağırın. Son olarak, eval() 'ın kullanımının son derece kötü bir uygulama olduğunu ve her ne pahasına olursa olsun kaçınıldığını unutmayın. Tam olarak ne elde etmeye çalışıyorsun? Eminim, bunu başarmak için daha az gereksiz yere kıvrık bir yol vardır. –

+0

Değerlendirmenin() ne hakkında olduğunu biliyorum ... ama burada yapmak istediğim şey: bir öğeyi hassaslaştırdığınız genel bir yöntem, ne yapacağımıza tıkladığımızda. Yalnızca bu öğeye göre (çeşitli efektlerle) öğeleri gösterme veya gizleme ile ilgilidir: (örn. Prev, next, parent, vb.). Ben de HTML şablonumun bu kadar dağınık olması nedeniyle, elemanların kimlikleriyle ya da benzer şeylerle yerleştirilmesi gibi gereksiz tüm şeyleri kaldırmak istedim. Şimdiye kadar çözümümden çok mutlu oluyorum çünkü tüm ihtiyaçlarımı ve hayal edebileceğimin üzerini örtüyor. Ve tamam ve genel olan kendi çözümümü koydum! –

cevap

0

Çözüm, here dur. Ve bu bir kopyası değil, yakın olmasına rağmen.

Kullanıcının "ittiği" elemanın aslında "anahtar verileri" olup olmadığını test ediyorum. Eğer değilse, hemen geri dönüyorum çünkü (ve bunun olmadığı bir durumda olduğunu sanmıyorum) çünkü bu elementin elemanlarından birinin, elementin kendisinin değil.

$('[data-hqf-switch]').click(function(e) { 
    if ($(e.target).filter(':not([data-hqf-switch])').length) { 
     return; 
    } 
    /* ok the target contains a 'data-hqf-switch' attribute */ 
    /* ... blabla ...*/ 
} 
+0

Birden fazla kardeşin arasında tıklanan öğeyi kesin olarak belirlemek ve olayları tetiklememek için daha kolay bir yol var. atalar (ebeveyn, büyükbaba veya büyükbaba vb.) JQuery değil, JS'nin 5+ satırıdır (olay işleyicisini saymaz). – zer00ne

+0

Çözüm vermeksizin "daha kolay bir yol var" diyorsanız, herhangi bir yardımda bulunmayacaktır .... –

+0

Zaten bir çözüm bulduğunuzu gördüğünüzde, ilgilenmiyorsanız zamanımı harcamak istemiyorum . – zer00ne

1

Olay yayılımı, olayın tıklanan öğe ve tüm atalar için ele alındığı anlamına gelir.

event.stopPropagation() ürününe bakmak isteyebilirsiniz.


Ben senin küçük hile eninde sonunda orta karmaşık bir şey yapıyoruz eğer icat gün pişman yapacak inanıyoruz.

+0

Sadece genişletmek için '$ (' [data-hqf-switch] ') gibi görünür. Click (function (event) {event.stopPropagation(); // sonra kodunuzla devam edin' – Djave

+0

Tamam ama benim değil 'data-toggle' ve 'data-modal' türlerini yazan, bootstrap malzemesinin bir parçası ... Peki nasıl yapardın? –

+0

Sadece söylediğim gün pişmanım "Ben Delphi'den vazgeçerim Websiteleri geliştirerek yaşamak. "Çünkü WWW değil ama WWM (World Wide Mess) (hemen hemen her zaman WWFM) olarak adlandırılmamalıdır. –

İlgili konular