1

我为我的网站构建了一个 jquery 滑块。总共有 3 张幻灯片,每张幻灯片包含 30-40 张图片,链接到单独的页面。

我想完全删除未激活的幻灯片上的 href 链接,然后在幻灯片处于活动状态时再次添加它们。我尝试了几种方法,例如:

$('a').click(function(e){
e.preventDefault();
});

但这只会阻止链接点击,并不会真正删除它。

关于我能做什么的任何建议?

我想这样做的原因是因为谷歌不喜欢一个页面上超过 100 个内部链接,而我几乎有两倍!

谢谢,丹

4

4 回答 4

4

请注意,谷歌会抓取原始代码,不会关注导致 js 操作的代码。

您可以在 dom 中不使用 href 开始,并拥有类似的东西

<a data-href="url">

当图像滑动事件触发时,您可以通过以下方式激活它:

$(this).attr('href', $(this).data('href'))

或者您实际上可以在 dom 就绪时立即激活它们

$('#carousel a').each(function() {
    $(this).attr('href', $(this).data('href'));
});
于 2013-02-01T11:31:36.323 回答
1

我没有得到你的代码,你为什么要听点击事件?如果您不想停用它们,您可以$("a").css("display","none");稍后再将其重新设置。如果你不想完全删除 html,那就是$("a").remove();

无论如何,这对你没有帮助。Google 的索引器没有启用 javascript,您必须更改原始 html。

于 2013-02-01T11:30:15.023 回答
1

如果由于某种原因您不能,请在当前活动的图像上尝试此操作

$("active image identifier selector a").attr("href", "link to add");
$("all images selector").not("active image identifier selector").find("a").removeAttr("href")

请注意,使用 removeAttr 不会禁用链接,它会完全删除它,不确定这是否是您想要做的。只是为了确认一下,您是否要停用或删除链接。

e.preventDefault 仅禁用链接但不删除它。

假设您有第二张图像处于活动状态并且您执行类似 $("images a").attr("href", "link to add") 之类的操作,那么您如何知道要添加到该图像的链接以及之前的图像变成活动,因为您几乎丢弃了 href 属性。

我建议的一个解决方案是将链接存储在数据属性中,例如

//store href in link data for each link to be deactivated
$("all images selector").not("active image identifier selector").each(function(){

    var $this = $(this);

    //get url of link
    var url = $this.attr("href");

    //store url in a data attribute for that link
    $this.data("my-url", url);

    $(this).removeAttr("href");
});

//get data attribute of active image and readd href attribute
$("active image identifier selector a").attr("href", $("active image identifier selector a").data("my-url"));

试试这个,让我知道这是否有帮助。请注意,这不是最有效的方法。可能有更多优化的函数来循环链接,但我假设你首先要让它工作。

干杯。

于 2013-02-01T11:40:09.633 回答
0

href用户中使用javascript:void(0)将不会转到下一页,并且页面中不再使用 url。

试试这个代码:

$('a').click(function(e){
    $(this).attr("href","javascript:void(0)");
})
于 2013-02-01T11:33:55.730 回答