将类添加到选定的div(div不是唯一的)

时间:2013-09-03 20:16:35

标签: javascript jquery html css

我有divs的{​​{1}}。当我选择其中一个id="item"时,应该在divs添加一个新类,其中div已被选中。当ID不唯一时,有没有办法做到这一点?

HTML:

a

JavaScript(我尝试过,但不起作用):

<div class="something" id="item">
   <a href="#" class="something">...</a>
</div>
<div class="something" id="item">
   <a href="#" class="something">...</a>
</div>
<div class="something" id="item">
   <a href="#" class="something">...</a>
</div>
<div class="something" id="item">
   <a href="#" class="something">...</a>
</div>

编辑:我正在使用// changes all links on the website $("body").delegate('#item', 'click', function() { $( "a" ).addClass( "active" ); }); 函数,因为我使用PHP创建所有div,否则点击事件未注册。

3 个答案:

答案 0 :(得分:6)

不要使用无效ID,这是无效的。除了无效的ID之外,由于您使用$("a")来定位所有链接,而不是特定的链接,因此无效。

HTML:

<div class="something" id="item1">
   <a href="#" class="something">...</a>
</div>
<div class="something" id="item2">
   <a href="#" class="something">...</a>
</div>
<div class="something" id="item3">
   <a href="#" class="something">...</a>
</div>
<div class="something" id="item4">
   <a href="#" class="something">...</a>
</div>

JS

// I doubt your actual site uses something in both cases,
// but I made this more explicit.
$("body").on( 'div.something', 'click', function() {  

    $('.active').removeClass( 'active' );

    // Use this to add active to div
    $( this ).addClass( "active" );

    // Use this to add active to link
    $( this ).find( 'a' ).addClass('active");

});

另请注意,我假设您使用的是最新版本的jQuery,我将delegate更改为on - 如果不是,请返回delegate

答案 1 :(得分:1)

$(本).find( “A”)addClass( “活性”);

答案 2 :(得分:-1)

你应该试试这个:

<div class="something" id="item1">
   <a href="#" class="otherthing">...</a>
</div>
<div class="something" id="item2">
   <a href="#" class="otherthing">...</a>
</div>
<div class="something" id="item3">
   <a href="#" class="otherthing">...</a>
</div>
<div class="something" id="item4">
   <a href="#" class="otherthing">...</a>
</div>



$(".something").on('click', '.otherthing', function() {  
    $(this).addClass("active");
});