【问题标题】:change current class and load page in jquery在 jquery 中更改当前类和加载页面
【发布时间】:2015-02-05 10:32:02
【问题描述】:

我尝试更改菜单上的当前课程并加载页面。

<ul class="menu2">
    <li class="current" id="1"><a href="?stat=1"><b>item1</b></a></li>
    <li id="2"><a href="?stat=2" ><b>item2</b></a></li>
    <li id="3"><a href="?stat=3" ><b>item3</b></a></li>
    <li id="4"><a href="?stat=4" ><b>item4</b></a></li>
</ul>
$('.menu2 li a').click(function(e) {
    $('.menu2 li').removeClass('current');
    var $parent = $(this).parent();
    if (!$parent.hasClass('current')) {
        $parent.addClass('current');                
        $('#tableau').load($(this).find(a).attr('href'));
    }
    e.preventDefault();
});

当我点击item2 时,它正在加载具有良好参数?stat=2 的页面。但是现在的课不好,留到active in item1

但是当我评论这一行时:

$('#tableau').load($(this).find(a).attr('href'));

当前类更改,但加载不起作用。请问有人可以帮助我吗?

【问题讨论】:

  • 您已经从li 元素中删除了current 类,因此您的if 条件是多余的。
  • 你不需要检查这个if (!$parent.hasClass('current')) {,因为你已经删除了上面的current类。其次$(this).find(a).attr('href')——这不会像this本身指向@987654335那样工作@ 标记,因此它不会在 a 中得到任何 a

标签: jquery class load


【解决方案1】:

你的逻辑有点不对劲。首先,您已经从所有li 元素中删除了current 类,因此if 条件是多余的。其次,$(this) 指的是a 元素,所以$(this).find('a') 不会返回任何内容。试试这个:

$('.menu2 li a').click(function(e) {
    e.preventDefault();
    var $a = $(this), $parent = $a.parent();
    $parent.addClass('current').siblings().removeClass('current');                
    $('#tableau').load($a.attr('href'));
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-29
    • 1970-01-01
    • 1970-01-01
    • 2014-07-21
    • 2017-01-20
    • 1970-01-01
    相关资源
    最近更新 更多