在IE 7中,如果链接是使用jQuery创建的,如何获取链接的href属性的文字值
In IE 7, how can you get the literal value of a link’s href attribute, if the link was created using jQuery?
如果你在HTML中有一个常规链接,你可以使用jQuery的attr
函数获取其href属性的值:
<a id="testLink" href="test/link.html">Test Link</a>`
>>> $('#testLink').attr('href');
testLink.html
例:
- http://jsfiddle.net/63RsQ/1/
但是,如果链接是使用 jQuery 创建的,那么在 IE 7 中,此函数返回浏览器在单击链接时将访问的绝对 URL(例如 https://stackoverflow.com/questions/ask/testLink.html),而不是 href
属性的文本值。
例:
- http://jsfiddle.net/xtrEB/10/
我也尝试了this
、this.href
和this.getAttribute('href')
,它们都返回一个绝对的URL。
有没有办法获取 jQuery 在 IE 7 中创建的链接的 href
属性的文字值?
如果您以 jQuery 被迫使用.innerHTML
的方式创建链接,它将无法正常工作,并记录在: http://api.jquery.com/html/(也 http://api.jquery.com/jQuery/#creating-new-elements):
此方法使用浏览器的 innerHTML 属性。某些浏览器可能会 不生成完全复制提供的 HTML 源代码的 DOM。 例如,版本 8 之前的 Internet Explorer 将转换所有 指向绝对 URL 的链接上的 href 属性,以及之前的 Internet Explorer 到版本 9 将无法正确处理 HTML5 元素,如果没有 添加单独的兼容层。
要修复它,请以不强制 jQuery 使用 .innerHTML
的方式创建链接:
$('#test').append( $("<a>", {href: "test/link.html", text: "Test Link"}));
http://jsfiddle.net/xtrEB/12/
是不可能的,至少在IE7中是不可能的。JQuery 使用innerHTML
,IE 似乎在渲染时将 href 属性重写为完全限定域名 (FQDN)(已知早期版本的 IE 会这样做)。因此,文本值在渲染时丢失。如果你知道路径,你可以尝试使用一些字符串eqation来找到它,从URL或其他东西中剥离域。或者如果可能的话,完全忘记IE<8。
也许这篇文章提供了一些启示
如果使用纯 JavaScript 和 DOM 方法来添加元素,即使在 IE7 中也可以检索文字值。看到这个 jsfiddle
试试这个:
$('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/
- Ajax从一个链接中获取多个值
- jquery单击链接并获取单选输入值以更改span中的文本
- 从将我带到当前页面的链接中获取值
- 在 JavaScript 中使用 OnClick 从链接中获取文本
- 混合面板 - 跟踪所有链接并获取链接值
- AngularJS链接$http获取请求
- Jquery - 如何从链接 href 获取页码并用作类
- JavaScript 在单击链接时获取 href
- 如何在Iframe中单击任何链接时获取url
- node.jsexpress中有ajax工具(包)吗?链接(发布/获取)其他服务器并获取数据
- 在html超链接中获取Rally应用程序
- 在Javascript/JQuery中从超链接文本获取Href
- 有没有办法通过单击HREF链接来获取表中的值
- jQuery从它自己的(self)链接中获取查询字符串
- 点击链接时获取内部HTML
- 添加到数据表的链接以获取更多信息
- 单击链接后获取兄弟姐妹的ID
- 在单击另一个兄弟链接时获取兄弟链接类
- 如何使用jquery和php从链接中获取变量
- 如何使用jQuery从被单击的链接中获取元素的#id ?