亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

聽“風格改變”事件有可能嗎?

聽“風格改變”事件有可能嗎?

縹緲止盈 2019-07-03 15:43:24
聽“風格改變”事件有可能嗎?是否可以在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);     }})();這將臨時覆蓋內部Prototype.css方法,并在最后用觸發器重新定義它。所以它是這樣工作的:$('p').bind('style', function(e) {     console.log( $(this).attr('style') );});$('p').width(100);$('p').css('color','red');
查看完整描述

3 回答

?
梵蒂岡之花

TA貢獻1900條經驗 獲得超5個贊

由于jquery是開放源代碼的,所以我想您可以修改css函數來調用您選擇的函數(傳遞jQuery對象)。當然,您需要瀏覽jQuery代碼,以確保它在內部沒有使用任何其他方法來設置CSS屬性。理想情況下,您希望為jQuery編寫一個單獨的插件,這樣它就不會干擾jQuery庫本身,但是您必須決定這對您的項目是否可行。

查看完整回答
反對 回復 2019-07-03
?
江戶川亂折騰

TA貢獻1851條經驗 獲得超5個贊

自從這個問題被提出以來,事情已經有了一些進展-現在可以使用突變觀察員要檢測元素的“樣式”屬性中的更改,不需要jQuery:

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'] });

傳遞給回調函數的參數是誘變d對象,該對象允許您獲取舊的和新的樣式值。

支持是在現代瀏覽器中很好包括IE 11+。


查看完整回答
反對 回復 2019-07-03
?
翻閱古今

TA貢獻1780條經驗 獲得超5個贊

事件對象的聲明必須在新的CSS函數中。否則,該事件只能觸發一次。

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


查看完整回答
反對 回復 2019-07-03
  • 3 回答
  • 0 關注
  • 458 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號