jquery没有从js文件中选择元素

时间:2014-11-17 21:45:57

标签: javascript jquery html

以下是有效的:

<head>
<script type="text/javascript" src="scripts/jquery-ui-1.11.0.custom/jquery.min.js"></script>
<script type="text/javascript">
function getElemWidth(){
   var x =  $( "#menuDiv").width();
   alert(x);
}
</script>
</head>
<body onLoad="getElemWidth()" />
<div id="menuDiv" style="width:250px" />
</body>

这里有什么不起作用:

<head>
<script type="text/javascript" src="scripts/jquery-ui-1.11.0.custom/jquery.min.js"></script>
<script type="text/javascript" src="scripts/common.js"></script>
</head>
<body onLoad="getElemWidth()" />
<div id="menuDiv" style="width:250px" />
</body>

&#34; common.js&#34;的内容:

function getElemWidth(){
   var x =  $( "#menuDiv").width();
   alert(x);
}

它在两种情况下调用函数。我可以在两种情况下使用jquery,例如:

x = $(window).width();

工作得很好。出于某种原因,我无法从.js包含的文件中获取文档元素。我有什么遗失的吗?

我甚至在&#34; common.js&#34;下面添加了这个。包括:

<script type="text/javascript">
  $(document).ready(function(){
  alert($('#menuDiv').width());
  });
  </script>

完美无缺。我可以在menuDiv出现的同一文件中引用#menuDiv,但不能在包含的javascript文件中引用#menuDiv。这是正常的吗?

2 个答案:

答案 0 :(得分:1)

<head>
<script type="text/javascript" src="scripts/jquery-ui-1.11.0.custom/jquery.min.js"></script>
<script type="text/javascript" src="scripts/common.js"></script>
</script> <-- this is wrong, remove this extra tag

取决于更新问题:

你应该在jQuery DOM ready中调用该函数

$(function (){
    getElemWidth();
});

和HTML应该是

<head>
    <script type="text/javascript" src="scripts/jquery-ui-1.11.0.custom/jquery.min.js"></script>
    <script type="text/javascript" src="scripts/common.js"></script>
</head>
<body> <!-- remove onload -->
     <div id="menuDiv" style="width:250px" />
</body>

答案 1 :(得分:1)

问题是DOM可能还没有为jQuery做好准备。在DOM上操作的最安全点是在document is ready之后。页面可能已加载但未完全呈现。你的common.js应该是这样的:

function getElemWidth(){
   var x =  $("#menuDiv").width();
   alert(x);
}

$(document).ready(function(){
    getElemWidth();
});

你的HTML就像这样:

<head>
    <script type="text/javascript" src="scripts/jquery-ui-1.11.0.custom/jquery.min.js"></script>
    <script type="text/javascript" src="scripts/common.js"></script>
</head>
<body>
    <div id="menuDiv" style="width:250px"></div>
</body>