实习小结十:jQuery获取父类class类名,控制不同板块

本文分享了一次将六个联动效果改为独立联动的过程,通过在HTML中增加外层div并利用PHP动态生成元素来实现。使用jQuery实现了点击切换时的样式更新及交互效果。

呵呵、我又来了,刚刚小伙伴让我把早上做好的,六个联动改成各自联动,我很呵呵,不过还好,一个小时不到就解决了,毕竟有经验了。

html代码:在外层添加了一个div来通过index控制不同的版块,贴出简略版代码。

<div class="company-info">
    <div class="company<?php echo $title_index;?>">
        <h3>
            <span class="title-left">最佳<?php echo ($title[$title_index]) ?>
            </span>                    
        </h3>
        <div style="clear:left;"></div>
        <?php $else_index = 1; ?>
        <?php foreach ($companies as $index => $company) {?>
            <div class="infor<?php echo $else_index;?> info">  

                <div class="selected<?php echo $else_index;?> want-to">
                    <a class="active<?php echo $else_index;?> active" href="/review/company/<?php echo $company->company_id;?>"  style="text-decoration:none;color:#ffffff;" >我要评
                    </a>
                </div>
            </div><!-- info -->
        <?php $else_index++;} ?>
    </div><!-- company-index -->
</div><!-- company-info -->

比较重要的是获取父类的classname,然后重新组成选择器名称。
jQuery代码:

$('#week-best .company-info .want-to a').removeClass('active');
    $('#week-best .company-info .selected1 a').addClass('active'); 

    $("#week-best .company-info .want-to a").hover(function(){
        var name = String( $(this).parent().parent().parent().attr('class') );
        $("#week-best " + "." + name +" .want-to a").removeClass('active');
        $(this).addClass("active");
    },function(){
        $(this).addClass("active");
    });

这个页面做了快两周了,不想再改了…………

实现出来的效果:一个版块hover变化,其他不会发生变化。

jQuery 中,可以通过多种方式获取当前元素的所有类名。以下是具体的方法和解释。 ### 使用 `attr()` 方法获取类名 `attr()` 方法可以用来访问指定属性的值,当需要获取元素的类名时,可以直接传入 `"class"` 参数。 ```javascript var classNames = $(".targetElement").attr("class"); console.log(classNames); // 输出目标元素的所有类名字符串[^1] ``` ### 使用 `prop()` 方法获取类名 与 `attr()` 不同的是,`prop()` 更加适合处理布尔型属性或者 DOM 属性本身。对于类名来说,两者都可以正常使用。 ```javascript var classNamesUsingProp = $(".anotherTarget").prop("className"); console.log(classNamesUsingProp); // 同样会得到包含所有类名的字符串[^1] ``` ### 判断是否存在特定类名并返回布尔值 虽然这不是严格意义上的“获取所有类名”,但在某些情况下非常有用——即检测某个类名是否存在于当前元素之中。 ```javascript $(".checkThisOne").click(function () { var hasClass = $(this).hasClass("specificClassName"); alert(hasClass ? "Yes it does!" : "Nope."); }); // 上述代码片段展示了如何利用 hasClass 函数来确认是否有给定的 class 存在于点击的对象之上[^2]. ``` ### 结合原生 JS 和 jQuery 来列举所有类名 有时我们可能希望不仅仅获得一个由空格分隔的字符串形式的结果,而是想要数组或者其他更易于程序化操作的形式,则可考虑如下做法: ```javascript var elementWithClasses = $(".example")[0]; if (elementWithClasses) { Array.from(elementWithClasses.classList).forEach(function(item){ console.log(`Found Class: ${item}`); }); } // 这里先转换成普通的 HTMLElement 对象再调用其 classList API ,最后遍历打印每一个单独的 class 名称[^3]. ``` 综上所述,无论是采用简单的 `attr("class")` 或者稍微复杂的组合策略都能有效地完成任务:提取出所选中 HTML 元素携带的所有 CSS 类标识符集合。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值