我正在尝试将一个类添加到单击的div中它似乎什么也没做? 这是我的jquery
$("#dropdown-nav").click(function () {
this.addClass('open');
console.log('test');
});
答案 0 :(得分:6)
你有一个明确的问题,由之前的答案标记,以及一个潜在的问题(你对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>
答案 1 :(得分:2)
this
的语法错误。而不是
this.addClass('open');
写
$(this).addClass('open');
或
jQuery(this).addClass('open');
使用jquery时使用$ sign或前缀jquery
答案 2 :(得分:0)
当您处理jquery时,this
应为$(this)
$("#dropdown-nav").click(function () {
$(this).addClass('open');
console.log('test');
});
似乎,你刚开始使用Jquery。
答案 3 :(得分:0)
你错过了试试这个
$(this).addClass('open');
答案 4 :(得分:0)
'#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');
});