2014-03-06 101 views
1

我试图让一个#用于scrollTop函数,但我得到的是'undefined' 我哪里出错了?试图得到一个元素的位置,但它总是'undefined'

<html><head><meta http-equiv=Content-Type content="text/html; charset=UTF-8"> 
<meta name="viewport" content="width=device-width, initial-scale=1"> 
<link rel="stylesheet" href="http://code.jquery.com/mobile/1.4.1/jquery.mobile-1.4.1.min.css"> 
<script src="http://code.jquery.com/jquery-2.1.0.min.js"></script> 
<script src="http://code.jquery.com/mobile/1.4.1/jquery.mobile-1.4.1.min.js"></script> 
</head><body> 

<div data-role="page" id="page5" data-theme="c"> 
<BR><BR><BR><BR> 
<p><span id="1.11.13">1.11.13</span> Lots of text here... </p> 

<script> 
$(window).on('pageinit', function() { 
    console.log($('#1.11.13').css('top')); //undefined 
    console.log($('#1.11.13').position()); // undefined 
    //console.log($('#1.11.13').offset().top); = Uncaught TypeError: Cannot read property 'top' of undefined 
}); 

</script></div></body></html> 
+0

'$(文件)。在( 'pageinit''不是'$(窗口)。在(' pageinit''。 – Omar

回答

3

逃避它使用任何元字符(如!“#$%&“() * +,。/:; < =>?@ [] ^`{|}〜)作为名称的文字部分,必须用两个反斜杠进行转义:例如,一个id =“foo .bar“,可以使用选择器$(”#foo \ .bar“)。

所以要么逃脱特殊的cha racter:

$('#1\\.11\\.13') 

或使用:

var id="1.11.13"; 
$("[id='"+id+"']") 
+0

:)进入10K ... +1。顺便说一句,它是一个很好的答案。 –

+0

woooooohoooooo ......终于进入10k.Thanks :) –

1

在选择.指示类选择,所以你需要躲避它,因为在你的情况下,它是id值的一部分

你需要躲避.在ID

$('#1\\.11\\.13') 

演示:Fiddle

否则它会查找ID为1和类的元素和13

<span id="1" class="11 13">1.11.13</span> 

演示:Fiddle

0

请注意,id开始用号码无效HTML。

在你的情况,如果你想保持你的选择,你可以通过\

$('#1\\.11\\.13') 
+0

所以你逃避它,因为使用的数字.. :)只需将此行添加到您的答案,_因为您正在使用选择器内的元字符,你必须逃避它,使选择器工作.._ –

相关问题