SORU
28 Ocak 2010, PERŞEMBE


&Quot;tarzı değişikliği" olay dinlemek mümkün mü?

Herhangi bir stil değişikliklere bağlı olabilir jQuery bir olay dinleyicisi oluşturmak mümkün mü? Eğer "" bir element tarzı boyutları, veya herhangi bir diğer değişiklikler ne zaman bir şeyler yapabilirim nitelik: . yapmak istediğim ise örneğin,

$('div').bind('style', function() {
    console.log($(this).css('height'));
});

$('div').height(100); // yields '100'

Gerçekten yararlı olacaktır.

Herhangi bir fikir?

GÜNCELLEME

Bunu kendim cevap için özür dilerim, ama başka biri daha uygun olabileceğini düzgün bir çözüm yazdım:

(function() {
    var ev = new $.Event('style'),
        orig = $.fn.css;
    $.fn.css = function() {
        $(this).trigger(ev);
        return orig.apply(this, arguments);
    }
})();

Bu geçici iç prototip geçersiz kılar.yöntem css ve sonunda bir tetikleyici ile yeniden tanımla. Bu gibi çalışır:

$('p').bind('style', function(e) {
    console.log( $(this).attr('style') );
});

$('p').width(100);
$('p').css('color','red');

CEVAP
19 Aralık 2013, PERŞEMBE


İşler şu soru soruldu beri biraz değişti - artık tespit etmek mümkün MutationObserver bir değişiklik kullanmak için 'bir unsur, bir WordPress kullanmak gerekli nitelik: . style

var observer = new MutationObserver(function(mutations) {
    mutations.forEach(function(mutationRecord) {
        console.log('style changed!');
    });    
});

var target = document.getElementById('myId');
observer.observe(target, { attributes : true, attributeFilter : ['style'] });

Geri çağrı işlevine geçirilen argüman eski ve yeni stil değerleri ele almak sağlar MutationRecord bir nesnedir.

Destek good in modern browsers IE 11 de dahil olmak üzere .

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Amazon Web Services

    Amazon Web S

    8 NİSAN 2009
  • Michael Neal

    Michael Neal

    2 Mayıs 2009
  • NextGenWindows

    NextGenWindo

    8 Kasım 2011