2012-10-05 74 views
0

这是我的XHTML页面的代码。 jQuery位于我的应用程序的/js/文件夹中。所有其他页面的验证都是在jQuery中使用同一个文件完成的,但是我无法在我创建的这个测试页面上运行简单的jQuery代码。这是页面的代码:jQuery在XHTML页面上不起作用

<?xml version='1.0' encoding='UTF-8' ?> 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml" 
     xmlns:h="http://java.sun.com/jsf/html"> 
    <h:head> 
     <title>Facelet Title</title> 

    </h:head> 
    <h:body> 
     <script type="text/javascript" src="js/jquery.js"></script> 

     <script> 

      $(document).ready(function() { 
       $("p").text("The DOM is now loaded and can be manipulated."); 
      }); 

     </script> 
     <br/><br/><br/> 
     <p>Not loaded yet.</p> 
     <input id="pedram" type="text" onclick="alert('hi');"/> 
    </h:body> 
</html> 

我也尝试使用CDATA标记。我也将脚本移到了文档的头部。

唯一能正常工作的是我在onclick事件中放入的alert()。没有别的工作。

请告诉我我做错了什么。

回答

8

变化

<script src="js/jquery.js"> 
     $(document).ready(function() { 
      $("p").text("The DOM is now loaded and can be manipulated."); 
     }); 
</script> 

<script> 
     $(document).ready(function() { 
      $("p").text("The DOM is now loaded and can be manipulated."); 
     }); 
</script> 

你并不需要指定两次jQuery的源..也不需要时您正在使用的标签内的js

+0

不幸运!试过了。 – Disasterkid

+1

检查你的控制台..是你的jQuery获取加载?它是说$是不是一个函数? –

+0

所以如果警报有效,我可以认为jquery库加载正确吗?但为什么其他的东西不起作用? – Disasterkid

0

我必须使用我的应用程序(Java)的上下文路径,并添加到我的jQuery库地址。

<script type="text/javascript" src="#{facesContext.externalContext.requestContextPath}/js/jquery.js"></script> 
0

该问题似乎是您使用<h:body>与jQuery 1.x结合使用。

使用jQuery 2.x或<body>将解决您的问题。

jQuery 1.x很可能在某处使用document.body,由于document.body在使用<h:body>时为空,所以失败。


如果你不介意我问,你为什么用H命名空间(http://java.sun.com/jsf/html)?