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

  • Absolute Zero(Programming Tutorials)

    Absolute Zer

    22 Kasım 2012
  • Eric Enge

    Eric Enge

    2 Kasım 2009
  • pjtoohot

    pjtoohot

    15 NİSAN 2008