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

nim*_*rod 0 html javascript css jquery

我有不同divs的东西id="item".当我选择其中一个时divs,应该将新类添加到a已选择div的位置.当ID不唯一时,有没有办法做到这一点?

HTML:

<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>
Run Code Online (Sandbox Code Playgroud)

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

// changes all links on the website
$("body").delegate('#item', 'click', function() {  
    $( "a" ).addClass( "active" );
});
Run Code Online (Sandbox Code Playgroud)

编辑:我正在使用该delegate函数,因为我使用PHP创建所有div,否则未注册click事件.

Dav*_*ein 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>
Run Code Online (Sandbox Code Playgroud)

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");

});
Run Code Online (Sandbox Code Playgroud)

另外请注意,我改变delegateon假设你正在使用最新版本的jQuery的-如果不回去delegate