首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在div中找到所有hash #链接,并删除最后二十个链接的散列

在div中找到所有hash #链接,并删除最后二十个链接的散列
EN

Stack Overflow用户
提问于 2011-07-29 21:58:42
回答 5查看 1.8K关注 0票数 0

我得到了一个链接到画廊图片的div,这些图片是由脚本生成的。有-let说x数量的链接+ 20,这都是由脚本生成的。所以每个链接都有一个#和数字。比如www.example.com/#1。例如,在一个图库中,我可以有5张图片,这些图片会有#1 #2 #3等,而在这种情况下,生成的20张图片的编号总是从#6 #7到26#。

所以我的问题是如何用jQuery找到最后20个url并从中删除#。

阿雷克

EN

回答 5

Stack Overflow用户

发布于 2011-07-29 22:12:28

代码语言:javascript
复制
var start = $("div a").length - 21;
start = start < 0 ? 0 : start;

$("div a:gt(" + start + ")[href^='#']").each(function() {
    var $a = $(this);
    $a.attr("href", $a.attr("href").replace("#", ""));
});

工作示例:http://jsfiddle.net/958ea/2/

解释了

var start = $("div a").length - 21;会将start设置为a标签总数减去21。20 +1,因为length是总计数,但我们需要从0开始的索引。

因此,如果存在500锚标记,start将等于479

如果没有20个a标签,start = start < 0 ? 0 : start;会将start重置为0。对于这个示例,这可能不是必需的,但这是一个很好的检查,这样事情就不会崩溃。

然后,我们使用这个选择器遍历索引标记:"div a:gt(" + start + ")[href^='#']",它将选择索引大于start的值的所有a标记(在我的示例中是start= 10,即<a href="#11">)。接下来,它进一步过滤以#开头的a标记。这也可能是不必要的,但这是另一件值得检查的事情。

最后,将href中的#字符替换为空字符串""

票数 2
EN

Stack Overflow用户

发布于 2011-07-29 22:06:44

代码语言:javascript
复制
$("div > a").each(function() {
    var linkURL = $(this).attr("href");
    var newURL = linkURL.replace("#", "");
    //Do something with newURL here.
    //eg. to assign it the new url:
    //$(this).attr("href", newURL);
});

这将针对每个带有锚标记的div,所以如果您有多个div,那么给div一个id,并像这样将它作为目标。

代码语言:javascript
复制
$("#theIdYouChose > a").each(function() {
});
票数 0
EN

Stack Overflow用户

发布于 2011-07-29 22:09:28

看看jQuery nth-child吧。从阅读上看,它应该是这样的

代码语言:javascript
复制
$('body > a:nth-child(n+20)').each(function() {
    var _href = $(this).attr("href").replace("#","");
    $(this).attr("href", _href);
});

编辑:不要紧...这将选择第20个链接之后的所有链接。不是你想要的。

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

https://stackoverflow.com/questions/6874302

复制
相关文章

相似问题

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