1

我正在尝试使用 javascript/jquery 单击面板拆分器折叠/展开按钮,但无济于事。

Here is an example of the splitters: http://jdevadf.oracle.com/adf-richclient-demo/faces/components/index.jspx;jsessionid=GTYNMf7Mq2JD6L4v38yCdTh2HLplhJYLTGc1J1TjZFwmpZjcqh1n!-294683649?_afrLoop=28596129526428344&_afrWindowMode=0&_afrWindowId=null#%2Fcomponents% 2FpanelSplitter.jspx%40

如您所见,当您单击带箭头的小按钮时,区域会折叠。如果我尝试获取元素并单击它,则没有任何反应。

$("dmoTpl:innerVerticalSplitter::i").onclick()

如果我加载 jquery 脚本并触发点击,也没有任何反应。我有点困惑这一切是如何工作的,以及为什么脚本点击被忽略了。有任何想法吗?

4

5 回答 5

1

我不使用 JQuery,但这是一个使用 vanilla javascript 和<af:clientListener/>标签的示例。

<?xml version='1.0' encoding='UTF-8'?>
<jsp:root xmlns:jsp="http://java.sun.com/JSP/Page" version="2.1" xmlns:af="http://xmlns.oracle.com/adf/faces/rich" xmlns:f="http://java.sun.com/jsf/core">
  <af:resource type="javascript">
    function toggleSplitter(evt) {
        comp = evt.getSource().findComponent('ps1');
        if (comp) {
            comp.setProperty("collapsed", !comp.getProperty("collapsed"));
        }
        else {
            alert('not found');
        }
    }
  </af:resource>
  <af:panelStretchLayout id="psl1">
    <f:facet name="center">
      <af:panelSplitter id="ps1">
        <f:facet name="first">
          <af:outputText value="First" id="ot1"/>
        </f:facet>
        <f:facet name="second">
          <af:panelFormLayout id="pfl1">
            <f:facet name="footer"/>
            <af:commandButton text="Toggle" id="cb1" immediate="true">
              <af:clientListener method="toggleSplitter" type="click"/>
            </af:commandButton>
            <af:outputText value="Second" id="ot2"/>
          </af:panelFormLayout>
        </f:facet>
      </af:panelSplitter>
      <!-- id="af_one_column_stretched"   -->
    </f:facet>
  </af:panelStretchLayout>
</jsp:root>

在点击之前它被展开:

替代文字

点击后它被折叠起来:

替代文字

于 2010-10-18T17:29:30.950 回答
0

如果您知道事件处理程序,最好直接直接调用该方法,而不是尝试创建单击事件。这是 jQuery 中的一个示例。

事件处理程序的设置

var clickEventHandler = function(event) {
  ...
};

$('#some-button').click(clickEventHandler);

稍后以编程方式调用它

clickEventHandler();
于 2010-09-26T22:03:19.930 回答
0

jQuery 是 click() 而不是 onclick(),但是当我检查你的代码时,$ 不是 jQuery。你确定这个页面上有 jQuery 吗?

于 2010-09-26T21:40:08.073 回答
0

您可以使用 JQuery 来触发元素上的事件。考虑以下触发各种事件的代码。

$('#myElement').trigger('click');
$('#myElement').trigger('mousedown');
$('#myElement').trigger('touchstart');
于 2013-11-25T23:14:54.173 回答
0

对于以编程方式展开/折叠 af:panelBox,创建事件并以编程方式对其进行排队,如下所示。

折叠af:panelBox

DisclosureEvent discEvent = new DisclosureEvent(panelBoxCompObj, false);
discEvent.queue();

展开af:panelBox

DisclosureEvent discEvent = new DisclosureEvent(panelBoxCompObj, true);
discEvent.queue();
于 2018-03-19T10:22:07.487 回答