首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Jquery中的If/Else语句

问Jquery中的If/Else语句
EN

Stack Overflow用户
提问于 2015-02-25 00:48:12
回答 6查看 106关注 0票数 2

JSFiddle

我有一个导航过滤器,当点击时,每个项目将被高亮显示,这取决于它们在哪个类别下。我想当点击#所有-btn时,所有的项目将被高亮显示各自的颜色。现在,他们将突出黑色,但我想改变这一点。例如,

平面设计将是绿色的,网页设计将是红色的,平面设计将是蓝色的。

我认为jQuery中的if/ this语句可以实现这一点,但不确定如何将其框架化。也就是。

代码语言:javascript
复制
if (the item has class graphic) { 
    $("#projects").find("li.graphic").toggleClass("highlight-graphic");
} 
else if (item has class web) {
    $("#projects").find("li.web").toggleClass("highlight-web");
} 
else {
    $("#projects").find("li.flat").toggleClass("highlight-flat");
}

什么是设置这个的好方法,这个有用吗?

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2015-02-25 00:54:24

您可以给选项卡元素自定义data-*属性。在本例中,是data-target属性。

代码语言:javascript
复制
<ul>
    <li class="default-btn" data-target="wrap" id="all-btn">All</li>
    <li class="default-btn" data-target="web" id="web-btn">WEB DESIGN</li>
    <li class="default-btn" data-target="graphic" id="graphic-btn">GRAPHIC DESIGN</li>
    <li class="default-btn" data-target="flat" id="flat-btn">FLAT DESIGN</li>
</ul>

然后,您可以将all of您的jQuery简化如下:

代码语言:javascript
复制
$('li.default-btn').on('click', function () {
    $('#projects').find('.wrap.' + this.dataset.target).toggleClass('selected');
});

由于您只需要切换一个selected类,您还可以将您的CSS简化为以下内容:

在此更新

代码语言:javascript
复制
.web.selected {
    border: 3px solid red;
}
.graphic.selected {
    border: 3px solid green;
}
.flat.selected {
    border: 3px solid blue;
}
票数 3
EN

Stack Overflow用户

发布于 2015-02-25 00:51:16

您可以使用jQuery的hasClass()。与…有关的东西:

代码语言:javascript
复制
var projElement = $("#projects li");

if ( projElement.hasClass('graphic') ) { 
    projElement.toggleClass("highlight-graphic");
} 
else if (projElement.hasClass('web') ) {
    projElement.toggleClass("highlight-web");
} 
else if (projElement.hasClass('flat') ) {
    projElement.toggleClass("highlight-flat");
} 
else {
    // do nothing;
}

更新

我更新了您的摆弄这事 (删除控制台日志记录,仅供说明之用):

代码语言:javascript
复制
$(document).ready(function () {
    $('#nav-filter li').on('click', function () {
        var clickedOn = $(this).attr('id');
        console.log( 'clicked on: ' + clickedOn ) ;

        $("#projects li").each(function (index, value) {
            if (clickedOn === 'all' ){
                $(value).toggleClass("highlight-" + clickedOn );

            }else if ($(value).hasClass( clickedOn )) {
                $(value).toggleClass("highlight-" + clickedOn );
            }
        });
    });
});

见文档

票数 2
EN

Stack Overflow用户

发布于 2015-02-25 00:52:13

你可以的

代码语言:javascript
复制
$('li#all-btn').click(function () {
    var toggle = $('#projects .wrap').not('.highlight-web, .highlight-graphic, .highlight-flat').length > 0;
    $("#projects").find("li.web").toggleClass("highlight-web", toggle);
    $("#projects").find("li.graphic").toggleClass("highlight-graphic", toggle);
    $("#projects").find("li.flat").toggleClass("highlight-flat", toggle);
});

演示:小提琴

如果你只想切换这个类

代码语言:javascript
复制
$('#all-btn').click(function () {
    $("#projects").find("li.web").toggleClass("highlight-web");
    $("#projects").find("li.graphic").toggleClass("highlight-graphic");
    $("#projects").find("li.flat").toggleClass("highlight-flat");
});

演示:小提琴

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28709214

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档