为什么JQuery不能在JSF(Primefaces)中工作 $j=jQuery.noConflict(); 函数appendText(){ 警报(“hi”); var txt1=“

为什么JQuery不能在JSF(Primefaces)中工作 $j=jQuery.noConflict(); 函数appendText(){ 警报(“hi”); var txt1=“,jquery,jsf,primefaces,Jquery,Jsf,Primefaces,文本。”; var txt2=$j(“”).text(“text”); var txt3=document.createElement(“p”); txt3.innerHTML=“文本。”; $j(“p”)。追加(txt1、txt2、txt3); } 函数appendList(){ var item1=“列表项””; var item2=$j(“”)。文本(“列表项”); var item3=document.createElement(“li”); item3.innerHTML=“列表项”;

文本。

”; var txt2=$j(“

”).text(“text”); var txt3=document.createElement(“p”); txt3.innerHTML=“文本。”; $j(“p”)。追加(txt1、txt2、txt3); } 函数appendList(){ var item1=“
  • 列表项”
  • ”; var item2=$j(“
  • ”)。文本(“列表项”); var item3=document.createElement(“li”); item3.innerHTML=“列表项”; $j(“ol”)。附加(第1项、第2项、第3项); } 这是一段

  • 清单项目1
  • 清单项目2
  • 清单项目3
  • 附加文本 附加列表项 这是一个简单的JSF页面,脚本中包含JQuery代码

    当我运行时,页面正在正确加载。但是,它并没有调用JQuery脚本

    我不知道为什么。。。有人能告诉我我做错了什么吗


    感谢您的支持。

    您应该删除包含jQuery的脚本标记

    Primefaces与jQuery捆绑在一起,因此如果您在web.xml配置文件中正确配置Primefaces资源servlet,那么它将自动包含在您的所有网页中

    编辑:


    此外,您不能使用$character在JSF页面上调用jQuery,因为这是表达式的保留字符。您必须以长形式调用jQuery

    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <!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:composite="http://java.sun.com/jsf/composite"
        xmlns:ui="http://java.sun.com/jsf/facelets"
        xmlns:h="http://java.sun.com/jsf/html"
        xmlns:f="http://java.sun.com/jsf/core"
        xmlns:p="http://primefaces.prime.com.tr/ui">
    
    <h:head>
    
        <script src="/resources/js/jquery-1.7.2.js" ></script>
    
        <script >
    
            $j=jQuery.noConflict();
    
            function appendText() {
                alert('hi');
                var txt1 = "<p>Text.</p>";
                var txt2 = $j("<p></p>").text("Text.");
                var txt3 = document.createElement("p");
                txt3.innerHTML = "Text.";
                $j("p").append(txt1, txt2, txt3);
            }
    
            function appendList() {
                var item1 = "<li>List item</li>";
                var item2 = $j("<li></li>").text("List item");
                var item3 = document.createElement("li");
                item3.innerHTML = "List item";
                $j("ol").append(item1, item2, item3);
            }
        </script>
    </h:head>
    
    <h:body>
    
    <f:verbatim>
    <p>This is a paragraph.</p>
    <ol>
    <li>List item 1</li>
    <li>List item 2</li>
    <li>List item 3</li>
    </ol>
    <button id="btn1" onclick="appendText()">Append text</button>
    <button id="btn2" onclick="appendList()">Append list items</button>
    </f:verbatim>
    <h:form>
    <h:commandButton value="jsf cmd btn APPEND TEXT" onclick="appendText()" id="btn3"/>
    
    
    </h:form>
    </h:body>
    
    </html> 
    
    编辑2:

    另外,尽量不要将Javascript与单引号和双引号同时使用

    jQuery('.example').click();
    
    警报('hi');
    var txt1=“文本。

    ”;

    选择一个引号字符并坚持使用它。这是一个很好的做法。

    您的第一次编辑不正确。
    $()
    非常好用。嗨,巴卢斯克,你能在这里给我提建议吗?。《枫叶》的第一个答案是你具体问题的答案。只需使用PrimeFaces绑定的jQuery,而不是提供自己的jQuery,这只会产生冲突。maple的第一个答案是对您的具体问题的回答。“您必须以冗长的形式调用jQuery”这显然是错误的
            alert('hi');
            var txt1 = "<p>Text.</p>";