4

attr如果您在 HTML 中有一个常规链接,您可以使用 jQuery 的函数获取其 href 属性的值:

<a id="testLink" href="test/link.html">Test Link</a>`

>>> $('#testLink').attr('href');
testLink.html

例子:

但是,如果链接是使用 jQuery 创建的,那么在 IE 7中,如果您单击链接,此函数将返回浏览器将访问的绝对 URL(例如https://stackoverflow.com/questions/ask/testLink.html) ,而不是href属性的字面值。

例子:

我也试过this,this.hrefthis.getAttribute('href'), 它们都返回一个绝对 URL。

有什么方法可以href在 IE 7 中获取 jQuery 创建的链接属性的文字值?

4

3 回答 3

4

如果您以 jQuery 强制使用的方式创建链接.innerHTML,它将无法正常工作,并记录在:http ://api.jquery.com/html/ (也 http://api.jquery.com/ jQuery/#creating-new-elements):

此方法使用浏览器的 innerHTML 属性。某些浏览器可能无法生成完全复制所提供的 HTML 源的 DOM。例如,版本 8 之前的 Internet Explorer 会将链接上的所有 href 属性转换为绝对 URL,版本 9 之前的 Internet Explorer 将无法正确处理 HTML5 元素,除非添加单独的兼容层。

要修复它,请以不强制 jQuery 使用的方式创建链接.innerHTML

$('#test').append( $("<a>", {href: "test/link.html", text: "Test Link"}));

http://jsfiddle.net/xtrEB/12/

于 2012-07-01T16:43:29.573 回答
1

我认为这是不可能的,至少在 IE7 中是不可能的。JQuery 使用innerHTML, 并且 IE 似乎在呈现时将 href 属性重写为完全限定域名 (FQDN)(已知早期版本的 IE 这样做)。因此,文字值在渲染时会丢失。如果你知道路径,你可以尝试使用一些字符串方程来找到它,从 url 中剥离域或其他东西。或者如果可能的话,完全忘记 IE<8。

这篇文章可能会有所启发

如果您使用纯 javascript 和 DOM 方法添加元素,即使在 IE7 中也可以检索文字值。看到这个jsfiddle

于 2012-07-01T16:39:11.480 回答
0

试试这个:

$('a').click(function () {
    var hrf = this.href;
    alert('this.href: \n' + hrf.slice(hrf.lastIndexOf('/')+1, hrf.length) );
    return false;
});

http://jsfiddle.net/xtrEB/5/

于 2012-07-01T16:24:56.990 回答