2014-12-05 80 views
3

我需要觸發一個事件時,我在按鈕上添加一個特定的類,但我不知道如何使它聽類添加事件。當元素特定類更改時jQuery的火功能

我有這樣的事情:

<script type="text/javascript"> 

$(document).ready(function() { 


    $(id_element).addClass("active"); 

    //this function will fire on add "active" class to "id_button" element 
    function fireOnActiveClass() { 
     //do something 
    } 


} 

</script> 

我不能碰代碼$(id_element).addClass("active");,爲更多的理由。

目前我使用jQuery 1.7.2

你能告訴我怎麼還是我需要知道什麼?

+1

[Mutation Observer](https://developer.mozilla.org/en-US/docs/Web/API/MutationObserver)? – Teemu 2014-12-05 13:06:22

+1

有很多不同的方法可以做到這一點,但問題是爲什麼你需要關於你的發佈代碼,因爲顯然你已經知道**當你添加這個特定的類 – 2014-12-05 13:07:53

+0

如果你不需要支持舊瀏覽器,你可以使用假動畫/轉換和使用特定CSS規則的動畫/轉場結束事件。或者擴展'addClass()'方法來觸發自定義事件,或者... – 2014-12-05 13:14:34

回答

1

您正在修改代碼中控件的類。那麼,爲什麼不在調整課程時簡單地調用按鈕?

$(id_element).addClass("active"); 
$(id_button).click(); 

$(id_button).click(function() { 
    if ($(this).hasClass) { 
    //do something 

    } 
}); 
1

當班級發生變化時不會引發任何事件。另一種方法是手動觸發一個事件,當您編程更改類:添加類等之後,右

$(document).ready(function() { 
    $(id_element).addClass("active").trigger('classChange'); 
    $(id_element).on('classChange', function() { 
     // do stuff 
    }); 
}); 
+0

爲什麼你需要在這裏觸發一個自定義事件?一旦添加了類,就調用方法 – 2014-12-05 13:09:03

+0

@ A.Wolff觸發一個自定義事件提供了更多的靈活性,並允許人們聽到事件冒泡,也許?它也更具可擴展性。 – Terry 2014-12-05 13:09:58

+0

但是,你仍然需要觸發它,我沒有看到任何目的(關於這個具體的例子)PS:雅關於靈活性,也許冒泡 – 2014-12-05 13:10:42

0

另外一個方法是調用一個函數:

$.fn.classAdded = function() { 
    var $button = $(this); 
    if($button.hasClass('id_button')) { 
     // ... 
    } 
    return $button; 
} 

$(id_element).addClass("active").classAdded(); 
相關問題