2012-04-19 63 views
2

我想知道是否有人可以提高我的代码...使用jQuery我试图在我们只需单击的元素上应用一个类,并在其他元素上禁用此类。jQuery:如何删除点击所有元素的类?

你将会在我的代码中看到我试图在我刚刚点击的类上应用一个类,并删除其他元素上的所有类。

但就目前而言,我做它的“易和Mega很长的路要走”,你可以在$见(“choice1-1”)。点击(函数()

能有些帮助我有一个代码,可以检测到所有其他的ID?

这里我暂时

$(document).ready(function() 
{ 
    $('#stick-question-1').mouseenter(function() 
    { 
     $('#stick-choices-1').show(); 

    }); 

    $('#stick-choices-1').mouseleave(function() 
    { 
     $('#stick-question-1').show(); 
     $('#stick-choices-1').hide(); 
    }); 


    $("choice1-1").click(function() 
    { 
     $(this).addClass('hover-etat'); 
     $("#choice1-2").removeClass('hover-etat'); 
     $("#choice1-3").removeClass('hover-etat'); 
     $("#choice1-4").removeClass('hover-etat'); 
    }); 

}); 

代码和我的HTML是这样

<div id="stick-choices-1" class="stick-choices"> 
     <a href="#" onclick="displayChoice1('Under 3\'9'); return false;" id="choice1-1">Under 3'9</a> 
     <a href="#" onclick="displayChoice1('4\' to 5\'2'); return false;" id="choice1-2">4' to 5'2</a> 
     <a href="#" onclick="displayChoice1('5\'3 to 5\'7'); return false;" id="choice1-3">5'3 to 5'7</a> 
     <a href="#" onclick="displayChoice1('5\'8 and more'); return false;" id="choice1-4">5'8 and more</a>   
    </div> 

回答

2

只需使用:

$("#stick-choices-1 a").click(
    function(e) { 
     e.preventDefault(); 
     $('.hover-etat').removeClass('hover-etat'); 
     $(this).addClass('hover-etat'); 
    }); 

我已经改变了你最初的选择,从而使click事件单击任一#stick-choices-1div元素中的链接触发,它可以防止点击的默认操作链接(假设您希望停止默认设置),则从该类中的任何元素中删除hover-etat类,然后将该类名应用于this元素。

可能,不过,是有意义的限制,其中jQuery的搜索与hover-etat类元素的范围,在同一#stick-choices-1元素中的元素,而不是整个文件:

$("#stick-choices-1 a").click(
    function(e) { 
     e.preventDefault(); 
     $('#stick-choices-1 .hover-etat').removeClass('hover-etat'); 
     $(this).addClass('hover-etat'); 
    }); 

或者:

$("#stick-choices-1 a").click(
    function(e) { 
     e.preventDefault(); 
     $(this).siblings('.hover-etat').removeClass('hover-etat'); 
     $(this).addClass('hover-etat'); 
    }); 
+0

逆序:) – 2012-04-19 16:26:57

+0

当然! ...哎呀。 = D – 2012-04-19 16:28:55

+0

这工作完美..正是我在找什么!你节省了我很多时间! – 2012-04-19 16:31:29

0

它将正常工作:

$("#choice1-1").click(function(){ 
    $(".stick-choices a").each(function(){ 
      $(this).removeClass(".hover-etat"); 
    }); 
    $(this).addClass(".hover-etat"); 
}); 
0

这应该做到这一点,并注册该处理程序的全部的链接。

$('#stick-choices-1 > a').click(function(ev) { 
    $(this).addClass('hover-etat').siblings().removeClass('hover-etat'); 
    ... 
}); 

注意使用.siblings(),以确保只有在同一个组的联系受到影响,而不发送不必要类变化的被点击链接。

0

此点击活动将针对所有的选择的工作:

$('.stick-choices a').click(function(e){ 
    $(this).siblings('.hover-etat').removeClass('hover-etat'); 
    $(this).addClass('hover-etat'); 
}); 
0
$('div.stick-choices a').on('click', function(e) { 
    e.preventDefault(); 
    $(this).addClass('hover-etat').siblings('a').removeClass('hover-etat'); 
}); 
0

$( “A”,$( “#棒的选择-1”))。点击(功能(){

$(".hover-etat").removeClass('hover-etat'); 
    $(this).addClass('hover-etat'); 

});

可能是这样的吗?