3

我正在尝试通过使用 css、javascript 添加/删除活动类来突出显示当前图像。

我将我的解决方案上传到了 jsfiddle,请看一下。真的很想了解这有什么问题。 http://jsfiddle.net/BEmXZ/39/

HTML

<div class="container-thumbs">
    <div><a><img src=".jpg" /></a></div>
    <div><a class="active"><img src=".jpg" /></a></div> 
    <div><a><img src=".jpg" /></a></div>
</div>

Javascript

var make_button_active = function() {
    //Get item siblings
    var siblings =($(this).siblings());
    //Remove active class on all buttons
    siblings.each(function (index) {
            $(this).removeClass('active');
        }
    );

    //Add the clicked button class
    $(this).addClass('active');
}   

$(document).ready(function() {
    $(".container-thumbs a").click(make_button_active);
});

CSS

.container-thumbs{
    width: 300px; height: 25; font-size: 18px;
}
.container-thumbs a{
    list-style: none; float: left; margin-right: 4px; padding: 5px;
}
.container-thumbs div a:hover, .container-thumbs div a.active {
    background-color: #f90;
}​
4

3 回答 3

5

siblings不起作用,因为您的锚点被包裹在 div 中。尝试:

var make_button_active = function() {
    $(".container-thumbs a").removeClass("active");
    $(this).addClass("active");
}

$(document).ready(function() {
    $(".container-thumbs a").click(make_button_active);
});​

演示。(一个新的小提琴,因为你还没有发布你的)

于 2012-11-30T11:42:20.900 回答
4

试试这个代码:

单击时,它会从所有图像中删除活动类,然后将其应用于当前图像。另外我觉得你根本不需要make_button_active功能。

$(document).ready(function() {
    $(".container-thumbs a").click(function(){
         $(".container-thumbs a").removeClass("active");
         $(this).addClass("active");
    });
});​

演示

于 2012-11-30T11:43:15.630 回答
1

如果您将代码更改为此它至少可以工作:

 var make_button_active = function()
{
  //Get item siblings

  var siblings = $(".container-thumbs a");      
  siblings.each(function (index)
{
  $(this).removeClass('active');
}
);
  $(this).addClass('active');
}   

 $(document).ready(function() {
$(".container-thumbs a").click(make_button_active);

});

于 2012-11-30T11:50:56.283 回答