Bazı sınıf değişimlerini algılamam gerekiyor, bu DOMAttrModified için kullanıyorum, ancak bir şeyler yanlış, ne?DOMAttrModified tarafından sınıf değişikliği nasıl algılanır?
Öneri için teşekkürler.
Bazı sınıf değişimlerini algılamam gerekiyor, bu DOMAttrModified için kullanıyorum, ancak bir şeyler yanlış, ne?DOMAttrModified tarafından sınıf değişikliği nasıl algılanır?
Öneri için teşekkürler.
Anlık sorun, attrName
özelliğinin jQuery's olayının bir parçası olmamasıdır ... 'u kullanmanız gerekir. İşte çalışma bunun bir örnek:
var first_img = $("body").find("div").first();
first_img.on("DOMAttrModified", function (e) {
if (e.originalEvent.attrName === "class") {
console.log("##DOMAttrModified, class changed");
if ($(this).hasClass("current-image")) {
console.log("##Element has 'current-image' class, changing");
$(this).removeClass().addClass("previous-image");
}
}
});
setTimeout(function() {
first_img.addClass("current-image");
}, 1000);
DEMO:http://jsfiddle.net/R5rTy/1/
setTimeout
olayı rastgele oluyor simüle etmektir.
Görünüşe göre, DOMAttrModified
olay tüm tarayıcılarda desteklenmez - http://help.dottoro.com/ljfvvdnm.php#additionalEvents
GÜNCELLEME:
var firstImg, observerConfig, firstImgObserver;
firstImg = $("body").find("div").first();
observerConfig = {
attributes: true,
childList: true,
characterData: true
};
firstImgObserver = new MutationObserver(function (mutations) {
mutations.forEach(function (mutation) {
var newVal = $(mutation.target).prop(mutation.attributeName);
if (mutation.attributeName === "class") {
console.log("MutationObserver class changed to", newVal);
} else if (mutation.attributeName === "id") {
console.log("MutationObserver id changed to", newVal);
}
});
});
firstImgObserver.observe(firstImg[0], observerConfig);
// later, you can stop observing
//observer.disconnect();
firstImg.on("DOMAttrModified", function (e) {
var newVal = $(this).prop(e.originalEvent.attrName);
console.log("DOMAttrModified", e.originalEvent.attrName, "changed to", newVal);
});
setTimeout(function() {
firstImg.addClass("previous-image").addClass("fdsa");
}, 1000);
:
MutationObserver
yeni kullanarak, şu her iki fikirlerin kullanımını gösterir
DEMO:http://jsfiddle.net/ybGCF/
Referans:
ama hiçbir şey oluyor :) Ben herhangi bir günlükleri yok – Lukas
@ Lukas Tahmin edeyim .. Chrome veya IE'de test ediliyor mu? FireFox'ta test ediyordum ve benim için iyi çalışıyor, ancak Chrome'da test etmeye karar verdi ve işe yaramadığını tespit etti. Tüm tarayıcılarda desteklenmiyor gibi görünüyor: http://help.dottoro.com/ljfvvdnm.php#additionalEvents – Ian
@Lukas Söylemeyi unuttum - Cevabımı uzun süre önce güncelledim 'MutationObserver', farklı tarayıcı desteği. Umarım şimdi benim cevabım yeterli vakaları kapsar – Ian
'attrName' özelliği jQuery'nin olayın nesnenin bir parçası değildir ... sen İlgisiz' e.originalEvent.attrName' – Ian
kullanmak gerekir Ancak Mutasyon olayları kabul edilmedi. Mutation Observers – PSL
@PSL'ye bir göz atmak isteyebilirsiniz. Kesinlikle bununla ilgili olduğunu söyleyebilirim. İhmalden söz etmek, çok önemli, çok önemli bir nokta. Cevabım hakkındaki yorumunu gördüm - pardon, kendi bilmecelerimizi yaratmalı ve aynı zamanda onları göndermeliydik. Buradaki yorumunuzu gördüğümde, en azından MutationObserver ' – Ian