ie8中的jquery更改attr href会更改文本

时间:2013-09-05 18:34:19

标签: javascript jquery

因此,我的代码适用于所有浏览器,但在IE8和IE7中,链接似乎不保留文本。

正在发生的事情的例子:

<a href="http//site.com/">view site</a>

在我的IE代码之后

<a href="http//site.com/">http//site.com/</a>

我做了一些搜索,并记录了多个问题。

我正在使用jQuery 1.4.2,但也尝试了1.10并没有区别。

var replacer = $('.ir a, .tk a');
//apply menu to inner links
$(replacer).each(function () {
    //get page param with getmenu    
    var getmenu = location.href.split("&menu")[1];
    if (typeof getmenu === 'undefined') {
        getmenu = "&menu=1";
    };
    var attr = $(this).attr("href");
    $(this).attr("href", attr + getmenu);
});

1 个答案:

答案 0 :(得分:1)

在报道四年之后,这仍然是最新jQuery(1.11.3)的一个问题。最简单的解决方案是在使用jQuery更改href属性后重置文本。

由于jQuery更改了文本以及href,只需在更改文本之前缓存文本并将文本设置回原来的样式:

// Keep a copy of the text before jQuery messes it up.
var text = $(this).text();
// Change the href.
var attr = $(this).attr("href");
$(this).attr("href", attr + getmenu);
// Set the text back to what it was.
$(this).text(text);

这对所有浏览器版本都非常安全,因此在应用此解决方法之前,您无需检查它是否为IE&lt; 9。