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() );