Javascript 不限制id属性以使用锚点构建URL

Javascript 不限制id属性以使用锚点构建URL,javascript,jquery,url,anchor,Javascript,Jquery,Url,Anchor,我们不想限制id属性来构建锚,还要限制Css选择器 例如: http://mysiteoryoursite.com/mypage/or/yourpage#idOfPTag 也就是说,如果页面包含id等于idOfTag的元素,请转到该元素: 现在,我们想要更自由: i、 e: 这意味着:转到页面中的第二个div: http://mysiteoryoursite.com/mypage/or/yourpage#$p:eq(8) ==>转到第8页的第8段是的,我们可以: $('body').

我们不想限制id属性来构建锚,还要限制Css选择器

例如:

http://mysiteoryoursite.com/mypage/or/yourpage#idOfPTag
也就是说,如果页面包含id等于idOfTag的元素,请转到该元素:

现在,我们想要更自由: i、 e:

这意味着:转到页面中的第二个div:

   http://mysiteoryoursite.com/mypage/or/yourpage#$p:eq(8)
==>转到第8页的第8段是的,我们可以:

 $('body').scrollTo(window.location.hash.substr(2),{duration:'slow'});
享受演示: 以及触发标签事件,如下所示:

<a href="#$p:eq(20)">Go to p:eq(20) </a>
简易豌豆:

$('html, body').animate({
    scrollTop: $(window.location.hash.substring(2)).offset().top
}, 2000);


出于安全考虑,这不是一个好主意。如果你将URL片段中的内容放入jQuery选择器,你就是在让某人完全控制你的网站。
看看window.location.hash
@rorymcrossan我不同意。有安全的方法去做。OP你试过什么?但这与@Abdennour的回答逻辑相同。。除了滚动,你还有其他逻辑吗?它们有一些相同的逻辑…但它们不一样
<a href="#$p:eq(20)">Go to p:eq(20) </a>
$(document).delegate('a[href^="#$"]','click',function(){
   $('body').scrollTo($(this).attr('href').substr(2),{duration:'slow'});

});
$('html, body').animate({
    scrollTop: $(window.location.hash.substring(2)).offset().top
}, 2000);