SORU
12 ŞUBAT 2011, CUMARTESİ


Yangın div değişikliği jQuery olay

Çeşitli şekillerde değiştirebilecek bir div var: örneğin tüm içeriği innerHTML ile yeniden olabilir, ya da düğümleri DOM yöntemleri ile eklenebilir. Bu çağrıları jQuery API veya diğer kütüphaneler aracılığıyla dolaylı olarak) yerel javascript ile şöyle veya böyle olabilir.

Div içeriği değiştiğinde bazı kod çalıştırmak istiyorum, ama varkesinlikle kontrolnasıldeğişecek. Şüphesiz onların divs içeriği istedikleri şekilde değiştirme hakkına sahip olan diğer insanlar tarafından kullanılan bir widget tasarlıyorum. Bu dıv iç içerik değiştiğinde, widget şeklinde de güncelleştirilmesi gerekebilir.

JQuery kullanıyorum. Bir şekilde bu div içeriğini, ancak değişen bir olay yakalamak için olanları var mı?

CEVAP
12 ŞUBAT 2011, CUMARTESİ


Eğer öğeler eklendiğinde veya kaldırıldığında, kontrol etmek DOMNodeInserted DOMNodeRemoved kullanabilirsiniz. Ne yazık ki, IE bunu desteklemiyor.

$('#myDiv').bind('DOMNodeInserted DOMNodeRemoved', function(event) {
    if (event.type == 'DOMNodeInserted') {
        alert('Content added! Current content:'   '\n\n'   this.innerHTML);
    } else {
        alert('Content removed! Current content:'   '\n\n'   this.innerHTML);
    }
});

Güncelleme

.data() ilk içeriğini ve gelecekteki değişiklikleri kaydetmek olabilir. İşte size bir örnek.

var div_eTypes = [],
    div_changes = [];
$(function() {
    $('#myDiv').each(function() {
        this['data-initialContents'] = this.innerHTML;
    }).bind('DOMNodeInserted DOMNodeRemoved', function(event) {
        div_eTypes.concat(e.type.match(/insert|remove/));
        div_changes.concat(this.innerHTML);
    });
});

Örnek çıktı:

> $('#myDiv').data('initialContents');
"<h1>Hello, world!</h1><p>This is an example.</p>"
> div_eTypes;
["insert", "insert", "remove"]
> div_changes;
["<iframe src='http://example.com'></iframe>", "<h4>IANA — Example domains</h4><iframe src='http://example.com'></iframe>", "<h4>IANA – Example domains</h4>"]

Güncelleme 2

DOMNodeInserted DOMNodeRemoved innerHTML bir öğe doğrudan değiştirilir tetikleyici olmadığını öğrendim çünkü DOMSubtreeModified da dahil etmek isteyebilirsiniz. Hala IE ile çalışmaz, ama en azından diğer tarayıcılarda gayet iyi çalışıyor.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Ampisound

    Ampisound

    12 Kasım 2006
  • Jana Williams

    Jana William

    17 AĞUSTOS 2011
  • Paulo Bautista

    Paulo Bautis

    21 Aralık 2008