क्या jQuery में एक इवेंट श्रोता बनाना संभव है जो किसी भी शैली परिवर्तन के लिए बाध्य हो सकता है? उदाहरण के लिए, यदि मैं किसी तत्व को आयाम बदलने, या शैली की विशेषता में कोई अन्य परिवर्तन करता हूं, तो मैं "करना" चाहता हूं:
$('div').bind('style', function() {
console.log($(this).css('height'));
});
$('div').height(100); // yields '100'
यह वास्तव में उपयोगी होगा।
कोई विचार?
अपडेट करें
इसे स्वयं उत्तर देने के लिए क्षमा करें, लेकिन मैंने एक साफ समाधान लिखा है जो किसी और के लिए उपयुक्त हो सकता है:
(function() {
var ev = new $.Event('style'),
orig = $.fn.css;
$.fn.css = function() {
$(this).trigger(ev);
return orig.apply(this, arguments);
}
})();
यह आंतरिक प्रोटोटाइप.ऐक्स विधि को अस्थायी रूप से ओवरराइड करेगा और अंत में ट्रिगर के साथ इसे फिर से परिभाषित करेगा। तो यह इस तरह काम करता है:
$('p').bind('style', function(e) {
console.log( $(this).attr('style') );
});
$('p').width(100);
$('p').css('color','red');