我有一个内部有一个div。我想点击div并按照与a相同的URL。这是HTML:
<div class="overview white getchildurl">
<p class="w70">
05-02-2011
</p>
<a class="button" href="details/">Details</a>
<span class="clear"></span>
</div>
我有这个脚本:
$('.getchildurl').each(function() {
$(this).click(function() {
var href = $(this).children('a').first().attr('href');
window.location = href;
});
});
这适用于Firefox 3.6,Chrome,Safari,但不适用于IE7和IE8。它重新加载页面,但保持在同一页面上。我检查了var href,它有正确的URL,但不会去那里。我做错了什么?
感谢。
编辑:将其设为绝对URL使其正常工作。这是新脚本:
$('.getchildurl').each(function() {
$(this).click(function() {
var href = $(this).children('a').first().attr('href');
var host = window.location.hostname;
window.location = 'http://' + host + '/' + href;
});
});
答案 0 :(得分:3)
正如我在评论中提到的,我不是100%肯定它(IE7 + 8如何处理.location
对象),但毕竟它只是一个对象。
尝试在href
对象中明确设置location
属性:
window.location.href = href;
答案 1 :(得分:3)
我将此作为一个不同的答案发布,因为它是一个不同的答案。如何解决JavaScript问题,而不是使用HTML和CSS解决问题。
尝试更改您的JavaScript以显示并确保值是您认为的
$(this).click(function() {
var href = $(this).children('a').first().attr('href');
alert(href)
alert(href.length)
window.location = href;
});
这将显示href
和href
长度。确保长度匹配。如果长度太大,则表示存在隐藏字符。
如果您确定问题是由语法引起的,则可以使用JavaScript完成许多网址修复/转换。例如,可以使用
删除尾部斜杠$(this).click(function() {
var href = $(this).children('a').first().attr('href');
window.location = href.replace(/\/$/, '');
});
此外,如果可以解决问题,可以使用JavaScript将URL转换为绝对URL。任何其他麻烦甚至不可见的字符都可以删除或替换。
您可以在互联网上发布网页,我们可以访问这些网页以查看我们自己的IE副本上的问题吗?您可以发布我们可以复制到我们的机器并在浏览器中查看的HTML文件吗?你对另一个问题的评论告诉我你有某种XHTML严格的DOCTYPE。如果我们中的一个人能够在我们的结束时解决问题,那么它就更有可能被修复。
答案 2 :(得分:1)
虽然主题已经过时,但它并没有过时。我遇到了同样的问题。
window.location = href;
如果在此之后添加另一个命令,则工作正常。
window.location = href;
return false;
这对我有用,并使用正确的网址重定向。希望这可以帮助其他人解决同样的问题。
答案 3 :(得分:0)
不完全是你问题的直接答案,但我有两个建议
您可能只想尝试查看jQuery是否会为您处理
$(this).children('a').first().click()
编辑:这没有解决问题
此外,您可能只想将整个<div
转换为<a
标记style="display: block; text-decoration: none"
。您可以使用字体颜色和下划线使文本内部显示您想要的内容。此外,此解决方案不需要JavaScript。它也使整个div节目集中而不仅仅是a或者根本没有。