对于我的一个javascript函数,我使用jqueries .attr方法从我的分页值中检索href值。电话只是
$(".pager").click(function(){
var start = $(this).attr('href');
alert("START: " + start);
}
html看起来像这样:
<a href="#10" class="pager"><span class="page_no">2</span></a>
<a href="#20" class="pager"><span class="page_no">3</span></a>
...
在FF和Chrome中,我看到Start值为10(单击第一个href)。 在IE中,它返回整个HTML(例如)
mysite/search_results.php#10
我甚至尝试过像这样使用子字符串:
var start = $(this).attr('href').substr(1);
但是这也返回了URL,而不是我地址中的第一个字符:
ysite/search_results.php#10
有任何想法或建议吗?
答案 0 :(得分:2)
试试这个:
$(".pager").click(function(){
var hashSplit = this.href.split('#');
var start = hashSplit[hashSplit.length -1];
alert("START: " + start);
});
小提琴:http://jsfiddle.net/maniator/PCJEF/
我已经过测试,它可以在IE中运行
答案 1 :(得分:1)
您可以执行类似
的操作if ($.browser.msie) {
var start = $(this).attr('href').slice($(this).attr('href').indexOf('#')+1));
} else {
var start = $(this).attr('href');
}
这段代码没有经过测试或确切,但你得到的要点 - 如果你在IE中,获取'#'的位置并从那里获得一个子串到最后,否则使用href的整个值
答案 2 :(得分:0)
IE愚蠢,这样做:
var start = $(this).attr('href').replace(document.location.pathname,'');
答案 3 :(得分:0)
听起来这可能与javascripts在返回url时的默认行为有关(类似于image src,返回完整路径)。您可以尝试在#上使用javascript拆分方法http://www.w3schools.com/jsref/jsref_split.asp,然后获取值。这应该在Chrome和FF中返回10,20,因为它将在#上拆分而不包含它。第二部分应该始终是数字:
var s = $(this).attr('href').split('#')[1];
alert(s);
答案 4 :(得分:0)
我相信虽然attr方法旨在减少浏览器之间的差异,但并不总是如JQuery的网站所说:
跨浏览器一致性:某些属性的值在浏览器之间报告不一致,甚至跨单个浏览器的版本报告。 .attr()方法减少这种不一致。
所以这只会减少这种机会;它并没有消除它。
所以,我认为我能看到修复它的唯一方法是使用某些人的回答看起来像TommyBs的答案很有希望使用这段代码:
var s = $(this).attr('href').split('#')[1];
这是一个有解决方案的论坛: http://www.sitepoint.com/forums/javascript-15/jquery-href-value-problem-665692.html