Javascript 使用外部URI作为滚动ID的Jquery

Javascript 使用外部URI作为滚动ID的Jquery,javascript,jquery,Javascript,Jquery,我知道这是一个基本问题。我的结构如下: <li id="example.org/element1"></li> <li id="http://example.org/element2"></li> <li id="example"></li> 这在ID“示例”中可以正常工作,但在其他包含URI的通用ID中则不行: example.org/element1 jquery-2.2.0.min.js:2 Uncaught

我知道这是一个基本问题。我的结构如下:

 <li id="example.org/element1"></li>
 <li id="http://example.org/element2"></li>
 <li id="example"></li>
这在ID“示例”中可以正常工作,但在其他包含URI的通用ID中则不行:

example.org/element1
jquery-2.2.0.min.js:2 Uncaught Error: Syntax error, unrecognized expression: #example.org/element1


http://example.org/element2
jquery-2.2.0.min.js:2 Uncaught Error: Syntax error, unrecognized expression: #http://example.org/element2

我一直在研究并尝试各种选择,例如转义角色和其他角色,但没有任何效果。是否有一种方法可以在内部使用此类id?

使用数据id,而不是id,因为我不确定id中可以包含什么:

<li data-id="example.org/element1">1</li>
确保正确转义,以防字符串中有单引号或双引号

这对ID“example”很好,但对另一个则不行 包含URI的通用ID:

example.org/element1
jquery-2.2.0.min.js:2 Uncaught Error: Syntax error, unrecognized expression: #example.org/element1


http://example.org/element2
jquery-2.2.0.min.js:2 Uncaught Error: Syntax error, unrecognized expression: #http://example.org/element2
因为您的代码
scrollTop:$('#'+target).offset().top
正在查找具有id的有效元素选择器,而不仅仅是任何URL

如果是
  • ,您的jquery代码将转换为

    scrollTop: $('#example.org/element1').offset().top
    
    这不是元素的名称

    但是,您可以将其设置为另一个属性(类似于@Gavriel提到的
    数据id

  • 1
  • log($(($li[data id='example.org/element1']))).html();
    这不是一个真正的选项,因为可能存在“example.org/element1”和“other.com/element1”@user1156544您无论如何不应该在id值中使用斜杠,因为这样它就不会形成有效的选择器@user1156544查看我的更新帖子,了解为什么它不起作用。在内部引用一些通用元素(如RDF中的元素)时,可能需要使用此类ID。我认为有一种方法可以在没有HTML5数据的情况下实现,但显然没有。我认为@Gavriel的答案是正确的,因为他写了first@user1156544是的,没错。希望你能理解。
    scrollTop: $('#example.org/element1').offset().top
    
    <li data-id="example.org/element1">1</li>
    
    
    console.log( $( "li[data-id='example.org/element1']" ).html() );