试图获得元素的位置,但它始终是“未定义的”

时间:2014-03-06 06:20:14

标签: jquery mobile position undefined offset

我正在尝试在scrollTop函数中使用#,但我得到的只是'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>

3 个答案:

答案 0 :(得分:3)

  

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

所以要么逃避特殊字符:

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

或使用:

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

答案 1 :(得分:1)

选择器中的

.表示类选择器,因此您需要转义它,因为在您的情况下它是id值的一部分

您需要转义ID

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

演示:Fiddle

否则会查找标识为1且类1113的元素

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

演示:Fiddle

答案 2 :(得分:0)

请注意,id以数字开头是无效的HTML。

在您的情况下,如果您想要保留选择器,可以通过\

将其转义
$('#1\\.11\\.13')