2010-09-26 2 views
1

Я пытаюсь щелкнуть панель сплиттера collaplse/expand с помощью javascript/jquery, но безрезультатно.Как вызвать событие щелчка программно?

Вот пример разветвителей: 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 и запускаю щелчок, то ничего не происходит. Я немного смущен, как все это работает, и почему скриптовые клики игнорируются. Есть идеи?

ответ

0

Это щелчок() не onclick() с jQuery, но когда я проверил ваш код $, это не jQuery. Вы уверены, что на этой странице есть jQuery?

+0

Страница из ссылки не использует jquery, no. Я работаю над проектом ADF, и моя страница может его использовать, но я не думаю, что есть какая-то публичная демонстрация, которая использует оба. – jernej

0

Вместо того чтобы пытаться создать событие click, если вы знаете обработчик событий, обычно лучше напрямую напрямую обращаться к этому методу. Вот пример в jQuery.

Настройка обработчика событий

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

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

Calling это программно позже

clickEventHandler(); 
+0

Дело в том, что я просто хотел бы подражать клику пользователя из javascript/jquery. «dmoTpl: innerVerticalSplitter :: i» - это якорь, который, похоже, делает это, но я не совсем понимаю, как именно он работает. Вызов из jquery на нем ничего не делает. html этой кнопки: Bereich ausblenden jernej

1

Я не использую JQuery, но вот пример, который работает с помощью ванили яваскрипта и <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> 

, прежде чем нажать он расширен:

alt text

и после нажмите он рухнул:

alt text

0

Вы можете использовать JQuery, чтобы вызвать событие на элемент. Рассмотрим приведенный ниже код, который запускает различные события.

$('#myElement').trigger('click'); 
$('#myElement').trigger('mousedown'); 
$('#myElement').trigger('touchstart'); 
Смежные вопросы