我正在尝试向单击的 div 添加一个类它似乎没有做任何事情?这是我的jQuery
$("#dropdown-nav").click(function () {
this.addClass('open');
console.log('test');
});
您有一个明确的问题,由以前的答案标记,还有一个潜在的问题(您对 Abinash 的评论表明,按照他的建议去做,解决了第一个问题,但不能正常工作)。
问题A:addClass
是jQuery对象的一个方法,不是DOM元素,而是click
回调内this
指的是一个DOM元素。要将其包装在 jQuery 对象中,请使用$(this)
或jQuery(this)
(在noConflict
模式下)。请参阅前面的答案。
问题 B:如果仅此一项还不能解决问题,则最有可能的是,dropdown-nav
当您运行连接click
处理程序的代码时,该元素还不存在。有两种方法可以确保它存在:
将script
包含连接代码的标签放在HTML 文件中的元素下方。通常,最好将脚本放在最后,就在结束</body>
标记之前。或者,
使用 jQuery 的ready
回调。
如果这些都不能解决,其他可能的解释是:
id
您认为它拥有的 ( dropdown-nav
)click
事件并在您的代码看到它之前停止了该事件这是一个解决这两个问题的示例,使用问题 B 的解决方案 #1:
<!DOCTYPE html>
<html>
<head>
<meta charset=utf-8 />
<title>JS Bin</title>
<style>
.open {
color: blue;
}
</style>
</head>
<body>
<div id="dropdown-nav">Drop-down nav</div>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.1/jquery.min.js"></script>
<script>
// Note that this is BELOW the element in the HTML, so the element exists
$("#dropdown-nav").click(function() {
$(this).addClass("open");
});
</script>
</body>
</html>
你的语法this
是错误的。代替
this.addClass('open');
写
$(this).addClass('open');
或者
jQuery(this).addClass('open');
使用 jquery 时使用 $ 符号或前缀 jquery
当您处理 jquery 时,this
应该是$(this)
$("#dropdown-nav").click(function () {
$(this).addClass('open');
console.log('test');
});
看来,您刚刚开始使用 Jquery。
你错过了 $ 试试这个
$(this).addClass('open');
'#dropdown-nav sounds like a large element to me. Are you sure it's not something like
#dropdown-nav .menu-item`?无论如何,上述所有建议听起来都值得尊重和相关。这是您可能想尝试的一件事:
$("#dropdown-nav").on('click',function (e) {
alert('You actually clicked on ' + e.target);
$(this).addClass('open');
console.log('test');
});