gpt4 book ai didi

javascript - 如何根据用户选择显示/排序特定的 div

转载 作者:可可西里 更新时间:2023-11-01 14:58:23 26 4
gpt4 key购买 nike

如果标题没有准确描述我正在尝试做的事情,我深表歉意。至少可以说,我是这一切的新手!为了帮助您理解我要完成的工作,请阅读下面的示例。

我有一个 div 列表,每个 div 都可能有一系列我称之为“标签”的标签。对于此示例,我将使用红色、蓝色和绿色作为可能的标签。每个标签还有一个链接到它的按钮,用户可以单击该按钮来过滤显示的 div。当按钮处于“开启”状态时,它将显示带有该特定标签的 div,但当它处于“关闭”状态时,它将隐藏带有该标签的内容。也就是说,除非内容有另一个当前打开的标签。

红色:开启

蓝色:关闭

绿色:开启


DIV 1:红色

DIV 2:蓝色

DIV 3:绿色

DIV 4:红、蓝

DIV 5:蓝色、绿色

DIV 6:绿色、红色

因为标签 Blue 被关闭,除了 DIV 2 之外的所有 DIV 都会显示。它仍然显示 DIV 4 和 DIV 5 的原因是因为标签 Red 和 Green 仍然打开。如果您同时关闭标签 Red,则只会显示 DIV 3、5 和 6,因为只有 Green 处于打开状态。

我确信有一种更优雅的方式来解释上述内容,但希望它能说明问题。我一直在寻找可以实现此目的的解决方案,但尚未找到。有很多使用搜索框的列表过滤器,但它们不能满足我的需要。

如果有人能指出正确的方向,告诉我可以用什么来完成这个,我将不胜感激!

最佳答案

这是一个关于如何做到这一点的工作示例:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" >

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.2/jquery-ui.min.js"></script>

<script type="text/javascript">
//<!--
$(document).ready(function() {
var buttons = {
'red': $('<input type="button"></input>').val('RED: on'),
'green': $('<input type="button"></input>').val('GREEN: on'),
'blue': $('<input type="button"></input>').val('BLUE: on')
};
var tags = [];
var _updateTaggedElements = function() {
// somewhat optimized if...then...else
if (0 == tags.length) {
$('#taggedElements > .red,.green,.blue').hide();
} else {
$('#taggedElements')
.find('.' + tags.join(',.')).show().end()
.find(':not(.' + tags.join(',.') + ")").hide()
;
}
};

$.each(buttons, function(c,el) {
tags.push(c); // all tagged elements initially visible...
$('#buttons').append(el.click(function() {
var state = /off$/.test(el.val());
var tagIndex = $.inArray(c, tags);
el.val(c.toUpperCase() + ": " + (state ? 'on' : 'off'));

if (state) {
if (-1 == tagIndex) {
tags.push(c);
}
} else if (-1 != tagIndex) {
tags.splice(tagIndex, 1);
}

_updateTaggedElements();
}));
});

});
//-->
</script>
<title>Button selector test</title>
</head>
<body>
<div id="buttons"></div>

<div id="taggedElements">
<div class="red">DIV 1: Red</div>
<div class="blue">DIV 2: Blue</div>
<div class="green">DIV 3: Green</div>
<div class="red blue">DIV 4: Red, Blue</div>
<div class="blue green">DIV 5: Blue, Green</div>
<div class="green red">DIV 6: Green, Red</div>
</div>

</body>
</html>

当然,可以根据您的需要修改它,但如您所见,它实现起来相当容易且很小。使用 tags 数组,您可以拥有任意数量的标签组合。

关于javascript - 如何根据用户选择显示/排序特定的 div,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3284800/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com