2010-08-26 3 views
1

У меня есть приложение для интерфейсов. На странице есть функция JQuery определена:rich: jQuery не работает на вызове JS

<rich:jQuery timing="onJScall" name="updateUrlHash" selector="#conversationId" 
    query="alert('in jquery call');" /> 

Тогда у меня есть некоторые a4j: commandLink, который должен вызвать функцию по завершению Ajax запроса.

<a4j:commandLink value="test" oncomplete="updateUrlHash(this)" /> 

К сожалению, это не работает. Я знаю неполные работы, потому что, если я помещу там alert('test');, будет показано предупреждение. Но когда я пытаюсь вызвать функцию updateUrlHash, она не работает. Я проверил в источнике страницы, что функция есть. Что может быть неправильным?

ответ

1

Я нашел его. Запрос вызывается для объекта, выбранного с помощью селектора jQuery. Таким образом, в примере, подобном этому, в javascript есть

jQuery(selector).alert('in jquery call'); 

Это, конечно, не может работать. Так что мне нужно вызвать что-нибудь на выбранном элементе, и тогда я могу делать то, что я хочу:

query="hide(); alert('this works');" 

В Javascript он затем (выбранный элемент скрыт в любом случае):

jQuery(selector).hide(); alert('this works'); 
+0

Интересно. Но разве вы не можете просто определить его как обычную ванильную функцию JS вместо использования 'rich: jQuery'? – BalusC

+2

Я мог бы, но я хотел использовать простой JSF id (#conversationId), который в сгенерированной странице похож на 'blabla: formbla: conversId '. обрабатывает его для меня. И это была интересная проблема в любом случае :) – amorfis

+0

А, это работает именно так. Спасибо, что поделился. – BalusC