助けてください。
Jquery addClass()
がevent.target
で機能しないのはなぜですか?コードを作成しましたが、クリックするとターゲットにクラスを追加するはずでしたが、機能せず、e.target.addClass
は関数ではありません。
コード:
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Class Test</title>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<style>
.big {
font-size: 5em;
}
.small {
font-size: 1em;
}
</style>
</head>
<body>
<p>This is the text</p>
<script>
$(function() {
$("p").click(function(e) {
$("a").removeClass("big").addClass("small");
$("this").addClass("big"); //This doesn't work
e.target.addClass("big"); //nor this one
});
});
</script>
</body>
</html>
基本的にe.targetはjavascript
オブジェクトになります。.addClass()
のような関数を使用する前に、それをJquery
オブジェクトに変換する必要があります
試して、
_$(e.target).addClass("big");
_
同時に、this
を文字列として渡すため、$("this").addClass("big");
このコードは機能しません。 this
もjavascriptオブジェクトです。$(this)
のようなjqueryオブジェクトとしても変換する必要があります
two問題があります:
$(this).addClass("big"); //Unquote to "this"
$(e.target).addClass("big"); // select e.target with $() wrapper.
この行を変更
$("this").addClass("big"); //This doesn't work
に
$(this).addClass("big"); //This will work work
さらに、event
自体で必要な場合は、
$(e.target).addClass('big');
.addClass()
はjQueryメソッドなので、jQueryオブジェクトが必要です。_e.target
_を_$
_内にラップして、jQueryオブジェクトに変換します。
_$(e.target).addClass("big");
_
それ以外に、他の解決策は$(this)
を使用することです。 _" "
_内にthis
をラップする必要はありません。
_$(this).addClass("big");
_
<script>
$(function() {
$("p").click(function(e) {
$("a").removeClass("big").addClass("small");
$(this).addClass("big"); //This doesn't work
});
});
</script>
「これ」=>これ
e.currentTarget.classList.add("loading_arrow");
上記の行を使用して、jsマウスイベントを使用してloading_arrowクラスを追加できます。