ile değiştiğini algılar Bir öğenin "display" css özelliğinin değiştirilip değiştirilmediğini algılamanın bir yolu var mı (yok mu yoksa engellen mi yoksa satır içi satır ...)? değilse, herhangi bir eklenti? TeşekkürlerOlay, css özelliğinin Jquery
cevap
Evet yapabilirsiniz. DOM L2 Events modülü mutation events; bunlardan biri - DOMAttrModified ihtiyacınız olanı. Verilen, bunlar yaygın olarak uygulanmamaktadır, ancak en azından Gecko ve Opera tarayıcılarında desteklenmektedir. Bu doğrultuda
deneyin şey:
document.documentElement.addEventListener('DOMAttrModified', function(e){
if (e.attrName === 'style') {
console.log('prevValue: ' + e.prevValue, 'newValue: ' + e.newValue);
}
}, false);
document.documentElement.style.display = 'block';
Ayrıca DOMAttrModified
bir yedek olarak IE's "propertychange" event kullanan deneyebilirsiniz. style
değişikliklerini güvenilir bir şekilde algılamaya izin vermelidir.
Yapamazsınız. CSS "olayları" desteklemez. Cesaretin ne için ihtiyacın olduğunu soruyorum? Buradaki post numarasına bakın. Bir olayı stil değişikliğine bağlamak için neden bir sebep düşünemiyorum. Burada, stil değişikliğinin başka bir yerde bir javascript tarafından tetiklendiğini farz ediyorum. Neden orada ekstra mantık eklemiyorsunuz?
birkaç etkinliklere sahip Bu bir kutuyu görünmesini veya tetiklemesini tetikleyebilir. Ve bir şeyleri yapmak için o kutunun görünüşüne bağlı olan başka bir elementim var. Şimdi, kodu tekrarlamak ve kutuya görünüm yapan diğer tüm etkinliklere bağlanmak istemiyorum, ancak bunu yapmanın bir yolu. Sadece fazlalık! –
Bu gereksiz, belki bir kural tabanlı sistem kullanarak çalışır? Yani, başka bir kontrol değiştiğinde bazı kontrollere ne olması gerektiğini tanımlayan bazı JSON benzeri yapı? Bu şekilde, kural nesnesini ve belki de geçerli denetimi (id) parametre olarak kullanan 1 işlevi oluşturmanız gerekir. – Colin
Bu neden azalıyor? Her iki elemanın ebeveynleri için sınıfın tanımlanması ve bunun üzerindeki stilin değiştirilmesi, bunun için tek doğru çözümdür. –
CSS özelliklerini test etmek için jQuery'nin css
işlevini kullanabilirsiniz. if ($('node').css('display') == 'block')
.
Colin, belirli bir CSS özelliği değiştiğinde tetiklenen açık bir olay olmadığını doğru. Ancak onu çevirebilir ve ekranı belirleyen bir olayı tetikleyebilir ve başka bir şey yapabilirsiniz.
Ayrıca, istediğiniz davranışı almak için CSS sınıflarını eklemeyi kullanmayı da düşünün. Çoğunlukla, içeren bir öğeye bir sınıf ekleyebilir ve tüm öğeleri etkilemek için CSS kullanabilirsiniz. Bir AJAX yanıtının beklemediğini belirtmek için sıklıkla bir vücut elemanına bir sınıf attım. Sonra istediğim ekranı almak için CSS seçicilerini kullanabilirim.
Aradığınız şeyin bu olduğundan emin değil misiniz?
Bunu nasıl yaparsınız? – crosenblum
attrchange jQuery plugin'u kullanabilirsiniz. Eklentinin ana işlevi, HTML öğelerinin özellik değişikliği konusunda bir dinleyici işlevini bağlamaktır.
kod örneği:
CSS geçiş z endeksi için transitionend etkinliği, örnek kullanabilir, etkileyecek olan özellikleri için$("#myDiv").attrchange({
trackValues: true, // set to true so that the event object is updated with old & new values
callback: function(evnt) {
if(evnt.attributeName == "display") { // which attribute you want to watch for changes
if(evnt.newValue.search(/inline/i) == -1) {
// your code to execute goes here...
}
}
}
});
bazı eklentileri için unutmayın o CSS'yi değiştir evnt.attributeName 'style' değil 'display'. – jerrygarciuh
iyi çalışır ancak bu düzenli ifade arama kullanarak daha hızlıdır ve eğer (evnt.attributeName ...) İlk gerekmez: if (evnt.newValue.indexOf ('display: inline-block')> -1) { ...; dönüş;} –
:
$(".observed-element").on("webkitTransitionEnd transitionend", function(e) {
console.log("end", e);
alert("z-index changed");
});
$(".changeButton").on("click", function() {
console.log("click");
document.querySelector(".observed-element").style.zIndex = (Math.random() * 1000) | 0;
});
.observed-element {
transition: z-index 1ms;
-webkit-transition: z-index 1ms;
}
div {
width: 100px;
height: 100px;
border: 1px solid;
position: absolute;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<button class="changeButton">change z-index</button>
<div class="observed-element"></div>
- 1. jQuery - Bir düğümün bir özelliğinin ne zaman değiştiğine ilişkin olay
- 2. jQuery tarafından hangi CSS özelliğinin animasyonu sağlandığını bulma
- 3. Bir olay jquery
- 4. jQuery .tap olay çalışmıyor
- 5. jQuery .click() olay (: sonra:/öncesi)?
- 6. undefined jQuery kullanıcı arabiriminin '_renderItem' özelliğinin HTML
- 7. JQuery altglobal olay
- 8. jQuery touchstart olay iphone
- 9. jQuery olay elemanı pozisyonu
- 10. jQuery onClick olay
- 11. jQuery Mobile - olay
- 12. Olay işleme jQuery unclick() ve unbind() olayları?
- 13. Yıldız işareti CSS özelliğinin yanında ne anlama geliyor?
- 14. JQuery'yi kullanarak bir CSS özelliğinin değeri nasıl alınır?
- 15. Tek bir olay işleyicisini jQuery
- 16. jQuery Otomatik Tamamlama: Olay seç
- 17. jQuery datatables olay işleyicisi çağrı
- 18. JavaScript/jQuery - onhashchange olay çözümü
- 19. $ .hover olay jQuery tarafından kaldırıldı?
- 20. devre dışı onclick olay jquery
- 21. jquery change onclick olay href
- 22. Olay dinleyicileri?
- 23. Heyecan önyükleme CSS + jQuery
- 24. JQuery CSS Seçici e.fn.e.init
- 25. jQuery - CSS Animasyon End
- 26. jQuery CSS Opaklık
- 27. jQuery CSS hatası
- 28. css seçiciler jquery ile
- 29. jQuery .css() geri dönüşler?
- 30. JQuery Yatay Akordeon CSS
Teşekkürler. Firefox'u destekliyor? –
Evet, IIRC, FF2 ve geçerli olana kadar – kangax
Bir eleman için etkili CSS görüntüleme özelliği dolaylı olarak değiştirilirse, örneğin elemanın CSS sınıfını değiştirerek bu işe yaramaz. –