点击添加类似乎无法正常工作

Con*_*all -3 jquery class add

我试图将一个类添加到一个被点击的div它似乎什么也没做?这是我的jquery

 $("#dropdown-nav").click(function () {

this.addClass('open');
    console.log('test');

});
Run Code Online (Sandbox Code Playgroud)

T.J*_*der 6

你有一个明确的问题,由之前的答案标记,以及一个潜在的问题(你对Abinash的评论表明他做了他的建议,这解决了第一个问题,并没有使它工作).

问题A:addClass是jQuery对象的方法,而不是DOM元素,但在click回调中this是指DOM元素.要将其包装在jQuery对象中,请使用$(this)jQuery(this)(在noConflict模式下).请参阅以前的答案.

问题B:如果仅靠这一点无法解决问题,那么最有可能的是,dropdown-nav当您运行代码连接click处理程序时,该元素尚不存在.有两种方法可以确保它存在:

  1. script包含连接代码的标记放在HTML文件的元素下面.通常,最好将脚本放在最后,就在结束</body>标记之前.要么,

  2. 使用jQuery的ready回调.

如果那些解决不了,其他可能的解释是:

  • 元素没有id你认为它有(dropdown-nav)
  • 其他东西已挂钩click事件,并在代码看到之前停止事件
  • (到达这里)你忘了加载jQuery

这是一个解决这两个问题的例子,使用问题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>
Run Code Online (Sandbox Code Playgroud)

实时复制