【问题标题】:rich:jQuery within ui:composition丰富的:在 ui:composition 中的 jQuery
【发布时间】:2011-11-18 11:55:28
【问题描述】:

我正在尝试在 facelet 组合中使用 rich:faces 组件 rich:jQuery.. 但我无法产生任何 jquery 调用。

<ui:composition xmlns="http://www.w3.org/1999/xhtml"

<ui:define name="body"> 
<h:form id="f"><h:commandLink value="Go" id="ex"/>
            <rich:jQuery selector="ex" query="alert('aw')"></rich:jQuery>


另一个问题...我将如何重写它以适应数字 1 模式.. 这是作为一次性查询立即应用或在文档就绪事件上应用.. 抱歉,但我很困惑……你能举出其他 1 号模式的例子吗? 希望这能启发我...:)

【问题讨论】:

    标签: jquery richfaces


    【解决方案1】:

    我不确定您在提供的示例中要做什么,但也许以下内容会有所帮助:

    来自online documentation

    rich:jQuery 允许将样式和行为应用于 DOM 对象。

    据我了解,查询属性包含可以为元素调用的 jQuery 函数。要在您的点击时发出警报,您可以执行以下操作:

    <h:commandLink value="AW1" id="x1"/>
    <rich:jQuery selector="#x1" query="click(function(){alert('test')});" /> 
    

    更多来自文档:

    丰富的:jQuery 可以在两种主要模式下使用:

    1. 作为一次性查询立即应用或在文档就绪事件上应用
    2. 作为可以从 JavaScript 代码调用的 JavaScript 函数

    模式是通过“计时”属性选择的,该属性具有以下内容 选项:

    1. immediate — 立即应用查询;
    2. onload — 加载文档时应用查询;
    3. onJScall — 通过调用应用查询 使用“name”属性定义的 JavaScript 函数。

    当“timing”属性值时,“name”属性的定义是强制性的 是“onJScall”。如果在“时间”值时定义了“名称”属性 等于 "immediate" 或 "onload",查询是根据 这个值,但您仍然有机会通过 函数名。

    “选择器”属性定义一个对象或对象列表。这 查询是用“查询”属性定义的。

    有很多不同的方式来使用这个组件。

    第一种模式是作为一次性查询立即应用或在文档就绪事件上应用。有来自在线文档的示例。

    第二种模式是您希望从事件中调用 JS 函数,示例取自文档:

    <h:graphicImage width="50" value="/images/warning.png" onmouseover="enlargePic(this, {pwidth:'60px'})" onmouseout="releasePic(this)"  />
    <rich:jQuery name="enlargePic" timing="onJScall" query="animate({width:param.pwidth})" />
    <rich:jQuery name="releasePic" timing="onJScall" query="animate({width:'50px'})"/> 
    

    如您所见,jQuery animate 函数是在查询属性中定义的,当鼠标悬停在图像上时,它将应用于图像组件。

    如果您希望在有人单击链接时调用 JS 函数,那么您不必使用 rich:jquery 组件并在您的 javascript 代码中仍然使用 jQuery。 JQuery 带有 RichFaces。如果您使用的是 RF 3.3.3,则必须在无冲突模式下使用 jQuery:http://docs.jquery.com/Using_jQuery_with_Other_Libraries

    最后看看这个组件的现场演示:

    http://livedemo.exadel.com/richfaces-demo/richfaces/jQuery.jsf;jsessionid=BD9D90829B8C4A9E230203856497FC9C?c=jQuery&tab=usage

    更新

    根据您在其中一个答案中提供的示例,请在下面查看我是如何做到的:

    <h:commandLink value="AW" id="x" onclick="testaw(this);return false;"/>
    <rich:jQuery name="testaw" timing="onJScall"  query="stop().fadeOut('slow')"/>
    

    您会注意到我删除了选择器和事件属性,这是因为您尝试执行的示例将属于我原来提到的第二种模式(作为可以从 JavaScript 代码调用的 JavaScript 函数)回答。

    我添加了在此模式下使用 jQuery 组件时必须使用的两个属性“名称”和“时间”。

    我还在链接中添加了一个 onclick 事件(并确保返回 false,因为此组件将尝试提交表单,如果发生这种情况,您将看不到 jquery 效果)。

    更新 2

    如下要求是一个基于您的示例的工作示例,用作页面加载时应用的一次性查询:

    <h:commandLink value="AW2" id="x2"/>
    <rich:jQuery selector="#x2" timing="onload" query="stop().fadeOut('slow')" />
    

    另一个例子是:

    <h:commandLink value="AW3" id="x3"/>
    <rich:jQuery selector="#x3" query="click(function(){jQuery(this).stop().fadeOut('slow')})" />
    

    上面的问题是表单被提交了。我试过这个,以为它会起作用,但它没有:

    <h:commandLink value="AW3" id="x3"/>
    <rich:jQuery selector="#x3" query="click(function(e){jQuery(this).stop().fadeOut('slow');e.preventDefault()});" />
    

    【讨论】:

    • 感谢您详细解释的答案..非常感谢...我会进一步研究您的建议并实施它...我还是 Richfaces 的新手,所以我需要进一步学习... :))谢谢..
    • 我已经更新了我的答案,并为您尝试做的事情提供了一个工作示例。
    • 非常感谢罗斯,为我的错误道歉。非常感谢它非常有帮助。非常感谢。^^,
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-07-27
    • 2016-02-15
    • 1970-01-01
    • 1970-01-01
    • 2013-02-26
    • 2023-04-08
    • 2011-08-29
    相关资源
    最近更新 更多