【问题标题】:JQuery removing and adding classesJQuery 删除和添加类
【发布时间】:2011-03-24 23:06:33
【问题描述】:

我正在尝试使用 JQuery 添加/删除类,作为使用链接在我的网站上切换主要内容 div 的函数的一部分。

这是我的 JavaScript:

$(document).ready(function () {
  var clickHandler = function (link) {
     $('.tab').hide();
     $('#options_' + link.data.id).show();
     $('.selected').removeClass('selected');
     $(this).addClass('selected');
   }

   $('.link1').bind('click', {id:'1'}, clickHandler);
   $('.link2').bind('click', {id:'2'}, clickHandler);
   $('.link3').bind('click', {id:'3'}, clickHandler);
});

这是我正在切换的 div 的 HTML(这部分有效):

<div id="options_1" class="tab">
<h3>Your Feed</h3>
<?= $userFeed ?></div>

<div id="options_2" class="tab">
<h3>All Recent Activity</h3>
<?= $feed ?>

</div>
<div id="options_3" class="tab">
<h3>Trends</h3>
Coming Soon!
</div>

这是页面侧边栏部分中控制 div 切换的链接的 HTML。应该从选项 1 中删除“选定”类并添加到用户选择的任何其他链接中,但这不会发生。类根本没有改变。

<ul id="feedOptions">
<li><a href="#" id="1" class="link1" class="selected">Your Feed</a></li>
<li><a href="#" id="2" class="link2">All Activity</a></li>
<li><a href="#" id="3" class="link3">Trends</a></li>
</ul>

就像我上面所说的,我根本无法更改“选定”类。有什么建议吗?

【问题讨论】:

    标签: php jquery forms


    【解决方案1】:

    您在单个元素上有多个 class 属性,而不是这个:

    <a href="#" id="1" class="link1" class="selected">Your Feed</a>
    

    你应该有这个(单个属性,用空格分隔的类):

    <a href="#" id="1" class="link1 selected">Your Feed</a>
    

    【讨论】:

    • 啊,当然!非常感谢,虽然我觉得有点像白痴。你不会相信我盯着它看了多久,忘记了我增加了一个额外的“类”。像魅力一样工作。
    【解决方案2】:
    $('.link1,.link2,.link3').bind('click', function() { $(this).toggleClass('selected'); });
    

    【讨论】:

    • 这不会在其他元素上切换类(删除之前选择的):)
    • @Nick:是的。这不是他问题的完整答案,而是他如何缩短代码的提示;-)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-21
    • 2018-11-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多