我正在尝试创建一个简单的过滤系统,用于隐藏与li
类下的navig
不具有相同ID的帖子。为了实现这一点,我循环遍历所有.article li
并检查他们的id
是什么。
示例:
li
id="health"
谢谢!
HTML:
<ul class="navig">
<li id="health">Health</li>
<li id="ASD">ASD</li>
</ul>
<br>
<ul class="article">
<li id="health">Article 1</li> <br>
<li id="ASD">Article 2</li> <br>
<li id="health">Article 3</li>
</ul>
使用Javascript:
$('.navig li').onclick(function () {
$id = this.id;
$('.article li').each(function() {
if ($id != this.id) {
$('.article li').hide();
}
});
});
答案 0 :(得分:0)
$('.navig li').onclick(function () { <-- not valid jquery
jQuery中没有onclick方法......有.click(function(){})
或on("click", function(){})
<ul class="navig">
<li id="health">Health</li>
<li id="ASD">ASD</li>
</ul>
<br>
<ul class="article">
<li data-id="health">Article 1</li>
<li data-id="ASD">Article 2</li>
<li data-id="health">Article 3</li>
</ul>
和脚本
$('.navig li').on("click", function() {
var id = this.id;
$(".article li").hide().filter('[data-id="' + id + '"]').show();
});
JSFiddle:http://jsfiddle.net/q8SCF/
答案 1 :(得分:0)
根本问题是您的HTML无效。您不能在多个元素上使用相同的id
值。另外,您已使用onclick
您想要使用click
的位置。
我可能会在导航data-article-id
上使用li
属性,而不是这样:
<!DOCTYPE html>
<html>
<head>
<script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
<meta charset="utf-8">
<title>Testing</title>
</head>
<body>
<ul class="navig">
<li data-article-id="health">Health</li>
<li data-article-id="ASD">ASD</li>
</ul>
<br>
<ul class="article">
<li id="health">Health Article</li>
<li id="ASD">ASD Article</li>
</ul>
<script>
$('.navig li').click(function () {
var articleId = $(this).attr("data-article-id");
alert(articleId);
var articles = $(".article li");
articles.not("#" + articleId).hide();
$("#" + articleId).show();
});
</script>
</body>
</html>
您希望在页面加载等时隐藏文章(或显示默认文章);我会把它作为锻炼给你。 : - )
附注:br
元素不能是ul
元素的子元素,我已从articles
列表中删除了元素。