我正在做一个Ajax网站,我必须添加到所有网址“#!”当访问者点击网址时,我的网站上的房子(不适用于外部网址)。 例如,当有人点击网址http://mysiteajax.com/contact/时,脚本就会更改网址:“http://mysiteajax.com/#!/contact /”
我编写了一个小脚本jQuery,但它不起作用:
<script>
var base_url = "http://localhost/ajaxsite/";
function link(href) {
// Check if the URL is an internal url
if(href.indexOf(base_url) !=-1 || href.indexOf('http://') == -1 || href.indexOf('https://') == -1) {
href = href.replace(base_url,'');
return base_url + '#!/' + href;
}
}
// Changes the link when someone clicks
$(document).ready(function () {
$('a').click(function() {
$('a').attr('href', link(this));
});
});
</script>
你能帮助我吗?
谢谢
答案 0 :(得分:2)
以下是我看到的一些问题:
如果我假设你在某个地方有ajax,那么由于原因2和3(假设你的ajax请求应该发给root),这仍然不起作用。
改变这个:
$('a').attr('href', link(this));
到此:
$(this).attr('href', link($(this).attr('href')));
这有点乱,但这是仅使用jQuery-isms更改点击元素的唯一方法。
我认为没有理由按照你的方式去做。如果您正在寻找this,我认为Google的网络抓取工具不会解释JS(这会在他们进行抓取的规模上花费太长时间)。你需要把它放在HTML本身。