为什么我不能在这个html元素中添加类?

时间:2014-05-24 07:04:58

标签: javascript jquery html

我试图在用户点击它时将活动类添加到元素中。为什么不起作用?语法有问题吗?

HTML code:

  <div class="accordion">
            <h3>a</h3>
            <p class="active">b</p>

            <h3>a</h3>
            <p>b</p>

            <h3>b</h3>
            <p>b</p>

            <h3>b</h3>
            <p>b</p>
        </div>

jQuery代码:

jQuery(function($) {

    $('div.accordion').click(function(e) {
        e.preventDefault();
        $(this).addClass("active");
    });
});

我想做的是当用户点击h3时,那就是当它将p标签设置在它下面的活动类

3 个答案:

答案 0 :(得分:2)

您需要将click事件绑定到H3元素。还要确保删除以前的活动元素:

var $h3 = $('.accordion > h3').click(function(e) {
    e.preventDefault();
    $h3.next('p').removeClass('active');
    $(this).next('p').addClass('active');
});

演示:http://jsfiddle.net/2DB37/

答案 1 :(得分:1)

  

我试图将活动类添加到p标记。

您忘记在p标记中添加点击事件:

jQuery(function($) {

    $('div.accordion h3').click(function(e) {
        e.preventDefault();
        $(this).next('p').addClass("active");
    });

});

答案 2 :(得分:0)

WORKING DEMO

将jQuery改为喜欢这个

jQuery(function($) {

    $('div.accordion p').click(function(e) {
        e.preventDefault();
        $(this).addClass("active");
    });
});

UPDATED DEMO

jQuery(function($) {

    $('div.accordion h3').click(function(e) {
        e.preventDefault();
        $(this).next().addClass("active");
    });
});