我有一个div,其中包含由脚本生成的图库图片的链接。有-let表示x个链接+ 20个由脚本生成的链接。 所以每个链接都有一个#和数字。像www.example.com/#1。 因此,在一个画廊中,我可以拥有5张图片,其中包括#1#2#3等,以及那些总是使用从#6#7到26#开始的数字生成的20张。
所以我的问题是如何用jQuery找到最后二十个url并从中删除#。
Arek
答案 0 :(得分:2)
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
重置为a
。 对于这个例子,这可能不是必需的,但是一个很好的检查,所以事情不会破坏。
然后我们使用此选择器遍历a
代码:"div a:gt(" + start + ")[href^='#']"
将选择索引大于a
的所有start
代码(其中在我的例子中是index = 10,即<a href="#11">
)。接下来,它会对以a
开头的#
标记进行进一步过滤。 这可能也是不必要的,但另一个好处是要检查。
最后#
中的href
字符替换为空字符串""
答案 1 :(得分:0)
$("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一个id,然后像这样定位
$("#theIdYouChose > a").each(function() {
});
答案 2 :(得分:0)
看看jQuery nth-child。仅仅是阅读它应该看起来像
$('body > a:nth-child(n+20)').each(function() {
var _href = $(this).attr("href").replace("#","");
$(this).attr("href", _href);
});
编辑:没关系...这将选择第20个链接后的所有链接。不是你想要的。
答案 3 :(得分:0)
如果在锚中用“”替换“#”,它在大多数浏览器中都不会显示为链接。试试这个
var lastAnchor = $("div a[href='#']:last"), count = 0;
while(count++ <= 20){
lastAnchor = lastAnchor.attr("href", "javascript:void(0)").prev("a[href='#']");
}
答案 4 :(得分:0)
基于上面的答案,你可以简化一些事情:
$.each(("div a[href^='#']").slice(-20), function() {
var $a = $(this);
$a.attr("href", $a.attr("href").replace("#", ""));
});
slice(-20)将获取数组的最后20个元素。