用jquery完全删除href链接

时间:2013-02-01 11:27:51

标签: jquery

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

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

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

但这只会阻止链接点击,实际上并不会将其删除。

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

我之所以这样做是因为Google不喜欢页面上超过100个内部链接,而且我几乎翻了一倍!

谢谢,Dan

4 个答案:

答案 0 :(得分:4)

请注意谷歌会刮掉原始代码,不会注意导致js操作的代码。

你可以在dom中没有href的情况下开始,并且有类似

的东西
<a data-href="url">

当图像滑动的事件发生时,您可以使用以下命令激活它:

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

或者你可以在dom ready上实时激活它们

$('#carousel a').each(function() {
    $(this).attr('href', $(this).data('href'));
});

答案 1 :(得分:1)

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

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

答案 2 :(得分: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仅禁用链接但不删除它。

假设您有第二个图像处于活动状态并执行类似$(“图像a”)。attr(“href”,“链接添加”),您如何知道添加到该图像和图像之前的链接当它们变得活跃时,因为你几乎丢弃了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"));

试试这个并告诉我这是否有帮助。 请注意,这不是最有效的方法。可能有更多优化的函数来遍历链接但是让它工作是优先的,我假设你。

干杯。

答案 3 :(得分:0)

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

试试这段代码:

$('a').click(function(e){
    $(this).attr("href","javascript:void(0)");
})