在点击</li>上交换一个<li>类

时间:2009-12-10 16:49:12

标签: javascript jquery css class

我正在尝试将选定的类从制表符交换到制表符,以显示哪一个是当前的

Sample Code

$("li.selected").idTabs(function(id,list,set){ 
$("a",set).removeClass("selected") 
.filter("[@href='"+id+"']",set).addClass("selected"); 
for(i in list) 
  $(list[i]).hide(); 
$(id).fadeIn(); 
return false; 
}); 

所以点击我试图删除并加载所选的类没有运气,试过这个

<ul class="idTabs">
  <li class="selected"><a href="#request-info">Request more information</a></li>
  <li><a href="#test-drive">Request a test drive</a></li>
  <li><a href="#make-offer">Make an offer</a></li>
  <li><a href="#get-quote">Get a quote</a></li>
</ul>

$('.idTabs li').click(function(){
$('.idTabs li').removeClass('selected');
  $(this).addClass('selected');
  return false;
});

3 个答案:

答案 0 :(得分:2)

Aaron,你的第二个例子看起来应该可行,但由于某种原因只适用于前两个列表项。我为li添加了类,使选择器更具体,现在工作正常。

<ul class="idTabs">
    <li class="navTab selected"><a href="#request-info">Request more information</a></li>
    <li class="navTab"><a href="#test-drive">Request a test drive</a></li>
    <li class="navTab"><a href="#make-offer">Make an offer</a></li>
    <li class="navTab"><a href="#get-quote">Get a quote</a></li>
</ul>

$('.navTab').click(function(){
    $('.navTab').removeClass('selected');
    $(this).addClass('selected');
    return false;
});

关于您的评论如下:

每次单击li时都有效...单击锚文本时不起作用,因为单击处理程序未附加到该文本。你应该添加“display:block;”在你的li中你的锚点将点击区域扩展到整个li(你需要从你的li中删除填充,然后填充你的'a'以便整个li可以点击)。然后...将点击处理程序移动到锚点并让它更改父级(li)类。我认为它应该是这样的(我现在无法测试它):

$('.navTab a').click(function(){
    $('.navTab').removeClass('selected');
    $(this).parent().addClass('selected');
    return false;
});

答案 1 :(得分:0)

为所有标签添加类似“标签”的类,然后尝试以下内容:

$('li.tab').click(function(){
  $('.tab').removeClass('slected');
  $(this).addClass('selected');
  return false;
});

答案 2 :(得分:0)

你还没有真正说出问题所在,但我猜你的选择器并不是很正确。您似乎将“set”类作为第二个参数传递,而不是作为选择器字符串的一部分传递。

尝试:

  $("a," + set).removeClass("selected")

   .filter("[@href='"+id+"']" + set)