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

时间:2013-09-28 13:43:41

标签: jquery class add

我正在尝试将一个类添加到单击的div中它似乎什么也没做? 这是我的jquery

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

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

});

5 个答案:

答案 0 :(得分: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回调。

  3. 如果那些没有解决它,其他可能的解释是:

    • 该元素没有您认为的iddropdown-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>
    

    Live Copy

答案 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。

了解:http://learn.jquery.com/javascript-101/this-keyword/

答案 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');
});