目标
使用jQuery,获取.intro-portfolio
类的每个元素。如果元素不是第一个,请将其替换为""
(无,空白,空字节)。
我做了什么
搜索周围,我找到了these questions,我试图将它们应用到我的情况中。简化的代码如下:
<!DOCTYPE html>
<html>
<head>
<script type="text/javascript">
$(document).ready(function() {
$(".intro-portfolio:not(:first-child)").each(function() {
$(this).repalceWith("");
});
});
</script>
<body>
<p>Test this is the control</p>
<p class="filter">This is the first</p>
<p class="filter">Second</p>
<p class="filter">Third</p>
</body>
</html>
当然,这不起作用(你能告诉我我不是一个javascript / jQuery开发人员吗?我敢打赌你在那里打破了语法规则)。
你会如何实现这个?
上下文
Tumblr主题 - 与问题无关,但它解释了为什么我不知道该类将应用于哪个元素 - 它可以是img
,或iframe
等。< / p>
非常感谢所有回答的人!显然这样一个简单的问题只有一个真实的方法,但谢谢你的回答!为所有人投票。
更新1:在尝试解决方案时,我发现虽然它从显示中移除了元素,但它们仍在加载。
这是我的实施:
<html>
<head>
...
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
<script type="text/javascript">
...
/* Remove HTML for all but first portfolio on home page */
$(".intro-portfolio").slice(1).remove();
</script>
</head>
<body>
...
</body>
</html>
但是当我查看源代码时,元素仍然存在。是不是docs page上的第三个代码摘录说的是元素不应该加载或存在?
查看development site的实际完整代码。
答案 0 :(得分:2)
:first-child
仅选择元素当且仅当它是其父元素的第一个子元素时。
您的HTML不包含.intro-portfolio
元素,但如果您将.filter
元素视为它们,那么它们都不是body
的第一个子元素。没有类的第一个p
元素是第一个子元素。
似乎你想要:
$(".intro-portfolio").slice(1).remove();
这会将所选元素减少到除第一个之外的所有元素并将其删除。
答案 1 :(得分:2)
您可以使用.slice
方法选择匹配结果的子集,在下面的示例中,它将选择除第一项之外的所有项目(索引为零)。
.remove
方法从DOM中删除匹配的元素,并且还会整理随jQuery附加的任何事件处理程序等。
jQuery('.intro-portfolio').slice(1).remove();
答案 2 :(得分:2)
$(".intro-portfolio").not(":first").each(function() {
$(this).bar();
});
答案 3 :(得分:2)
这里没有其他答案真的没有,但这是你想要做的最简单的形式:
$('.intro-portfolio:not(:first)').remove()
答案 4 :(得分:1)
试试这个:
$(".intro-portfolio:not(:first-child)").html("");
答案 5 :(得分:1)
$(document).ready(function(e){
$('.intro-portfolio:not(:first-child)').remove();
});
这可能吗?