请帮忙。
为什么jquery addClass()
无法使用event.target
?
我已经创建了一个代码,它应该在单击时在目标上添加类,但它不起作用,并且它说,e.target.addClass
不是函数。
CODE:
<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>
答案 0 :(得分:29)
基本上e.target将是javascript
对象,您必须先将其转换为Jquery
对象,然后才能使用.addClass()
等函数
尝试,
$(e.target).addClass("big");
同时,$("this").addClass("big");
此代码无效,因为您将this
作为字符串传递。 this
也是一个javascript对象,您需要将其转换为jquery对象,如$(this)
答案 1 :(得分:2)
由于.addClass()
是一个jQuery方法,你需要一个jQuery对象,所以将e.target
转换为jQuery对象,方法是将它包装在$
中:
$(e.target).addClass("big");
除此之外,另一种解决方案是使用$(this)
。你不需要在this
内包裹" "
:
$(this).addClass("big");
<强> Updated Fiddle 强>
答案 2 :(得分:2)
您有两个问题:
$(this).addClass("big"); //Unquote to "this"
$(e.target).addClass("big"); // select e.target with $() wrapper.
答案 3 :(得分:1)
更改此行
$("this").addClass("big"); //This doesn't work
到
$(this).addClass("big"); //This will work work
如果您需要event
本身,那么您可以使用
$(e.target).addClass('big');
答案 4 :(得分:0)
答案 5 :(得分:0)
<script>
$(function() {
$("p").click(function(e) {
$("a").removeClass("big").addClass("small");
$(this).addClass("big"); //This doesn't work
});
});
</script>
“this”=&gt;这个
答案 6 :(得分:0)
e.currentTarget.classList.add("loading_arrow");
您可以使用上面的代码通过js鼠标事件来添加loading_arrow类。