您的代碼不起作用,因爲您的函數中的e
是一個DOM元素,而不是一個jQuery對象。 DOM元素沒有jQuery功能。
我要指出的是,這是一個DOM元素的唯一原因是,通過給予元素的id
,你已經引起了瀏覽器爲它創建一個自動全球,這就是爲什麼onClick="done(test)"
在所有工作(在test
有一個變量引用,並且會自動獲取全局)。
的最小的解決辦法是讓一個jQuery對象:
function done(e){
e = $(e); // <===
if (e.hasClass("Gset")){e.removeClass("Gset") }
else {e.addClass("Gset") }
}
但更徹底的解決辦法是使用toggleClass
還有:
function done(e) {
$(e).toggleClass("Gset");
}
而更徹底的更新將是使用jQuery來連接處理程序,而不是使用長期過時的onxyz
屬性,這不僅僅是因爲依賴於自動全局變量容易出錯(例如,id="name"
會失敗):
$("#test input").on("click", function() {
$("#test").toggleClass("Gset");
});
.Gset {
background: yellow;
}
<h4 id="test">
<input type="checkbox">
Ready?
</h4>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
值得指出的是,只要將Javascript設置爲「Load Type:OnLoad」 – Stryner