每次my_div recive class'selected'時,我都想改變背景顏色。 到目前爲止,我得到這個:如何在jQuery中使用if語句
$(document).ready(function() {
if ($('#my_div').hasClass('selected')) {
$("body").css({backgroundColor: '#111'});
}
});
,但它不工作。
怎麼了?
每次my_div recive class'selected'時,我都想改變背景顏色。 到目前爲止,我得到這個:如何在jQuery中使用if語句
$(document).ready(function() {
if ($('#my_div').hasClass('selected')) {
$("body").css({backgroundColor: '#111'});
}
});
,但它不工作。
怎麼了?
I want to change background color each time when my_div recive class 'selected'.
有一塊這是給你的元素selected
類代碼。這段代碼有效地將您的元素的class
更改爲class = "whatever classes previously existed insertednewclass"
。做你想做什麼
的一種方法,就是找到它添加/刪除類的功能,並連接它,例如:
myFunction = function(...) {
$('#my_div').addClass('selected');
// add more code
$('#my_div').css({backgroundColor:...});
}
我假設你的情況是不像這樣簡單。但是,即使函數位於外部庫中,這也是可能的,但是如果庫改變了它的內部行爲,那麼這是有風險的。
// some.function is the function which adds the "selected" class
var oldFunction = some.function;
some.function = function() {
return oldFunction.apply(this, arguments);
}
如果你不能做到這一點,必須被動地檢測出類屬性修改,你可以使用在非IE瀏覽器隱約支持棄用的DOM 2級突變事件http://www.w3.org/TR/DOM-Level-3-Events/#events-mutationevents。您可以通過jQuery中的$.bind
查看它是否受支持;如果它在jQuery中不受支持,則可以使用your_element.addEventListener(...)
這是本地方式來執行任務(基本上,jQuery正在使用的所有內容)。
您可以創建一個自定義事件,當選定的類被設置或刪除時,該事件將被觸發。
例如
$(document).ready(function() {
$('#my_div').live('myDivChangedState', function(event) {
if($(event.target).hasClass('selected')) {
...
}
});
});
而不僅僅是觸發事件:
$('#my_div').addClass('selected').trigger('myDivChangedState');
-- OR --
$('#my_div').removeClass('selected').trigger('myDivChangedState');
你能說明它是如何接收這個類的嗎? –
如果你使用jQueryUIs'selectable',我會傾聽'selectableselected'事件。 –
你在尋找['.live()'](http://api.jquery.com/live/)或['.delegate()'](http://api.jquery.com/delegate/) ? –