我得到了一个链接到由脚本生成的库图片的div。有-let说x的链接数+ 20这是由脚本生成的。 因此,每个链接都有一个#和数字。像www.example.com/#1一样。 因此,在一个画廊中,我可以有例如5张图片,其中#1#2#3等等,以及始终由#6#7到26#中的数字开始的20个图片。找到一个div中的所有hash#链接并删除最后二十个链接的哈希
所以我的问题是如何用jQuery找到那些最后二十个网址,并从它们中删除#。
Arek
我得到了一个链接到由脚本生成的库图片的div。有-let说x的链接数+ 20这是由脚本生成的。 因此,每个链接都有一个#和数字。像www.example.com/#1一样。 因此,在一个画廊中,我可以有例如5张图片,其中#1#2#3等等,以及始终由#6#7到26#中的数字开始的20个图片。找到一个div中的所有hash#链接并删除最后二十个链接的哈希
所以我的问题是如何用jQuery找到那些最后二十个网址,并从它们中删除#。
Arek
$("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一个ID和目标像这样反而
$("#theIdYouChose > a").each(function() {
});
看在jQuery nth-child。单从阅读它应该是这个样子
$('body > a:nth-child(n+20)').each(function() {
var _href = $(this).attr("href").replace("#","");
$(this).attr("href", _href);
});
编辑:没关系...这将选择20链接后所有链接。不是你想要的。
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的总数量,因为长度是总计数,但我们需要基于0的索引。
因此,如果有500
锚标记start
将等于479
;
start = start < 0 ? 0 : start;
将重置start
到0
如果以某种方式没有20 a
标签存在。 对于这个例子,这可能不是必要的,但一个很好的检查,所以事情不会中断。
然后,我们通过使用这个选择器a
标签循环:"div a:gt(" + start + ")[href^='#']"
这是会选择具有比start
值更大的索引的所有a
标记(这在我的例子是指数= 10,它是<a href="#11">
)。接下来,它进一步过滤a
开始的标签#
。 这可能也是不必要的,但是检查是另一件好事。
最后,如果你在它没有出现在大多数浏览器的链接锚代替“#”改为“”在href
的#
字符替换为空字符串""
。尝试在回答这个
var lastAnchor = $("div a[href='#']:last"), count = 0;
while(count++ <= 20){
lastAnchor = lastAnchor.attr("href", "javascript:void(0)").prev("a[href='#']");
}
楼以上可以简化事情有点:
$.each(("div a[href^='#']").slice(-20), function() {
var $a = $(this);
$a.attr("href", $a.attr("href").replace("#", ""));
});
切片(-20)会抢了数组的最后20个元素。
哇,谢谢你:)感谢您的可视化:D – altheris
这看起来可以找到第20个链接后的所有链接,而不是像描述所说的最后20个链接。在说明中他说#6-#26链接是需要改变的。 – Danny
@user - 它不会做你的想法。检查一下这个例子,你会发现它已经选择了最后的20个锚定标记 – hunter