更新后未调用Jquery事件

时间:2013-05-26 19:23:12

标签: java javascript jquery jsf primefaces

我手上有一个非常简单的JSF形式:

<h:inputText id="number" value="#{bean.value}"
styleClass="integer" onkeyup="update()" />

我有一个jQuery选择器,如下所示:

jQuery(document)
        .ready(
                    jQuery(".integer")
                            .keydown(
                                    function(event) {
                                        //do your stuf


        });

现在,这个函数很好地被触发,直到我更新围绕此输入的容器。这是一个ui:顺便说一句。 update()方法仅刷新标签。更新后,在重新加载页面之前,函数永远不会被触发。这个jquery包含在head部分的一个文件中,但是在更新后仍然存在,但是没有触发函数?如何在更新后再次使用?

2 个答案:

答案 0 :(得分:1)

正如其他人已经回答:当您更新容器时,事件处理程序不再连接,您需要重新附加它。

然而,另一个选择是使用jquery的on()方法。

所以使用这样的东西(虽然未经测试):

jQuery(document)
    .ready(
        $(document).on("keydown", '.integer', function (event) {
            //do your stuf
    }));

答案 1 :(得分:0)

更新后这不起作用,因为元素不再是绑定事件,所以你应该创建一个Javascript函数来解决这个问题:

<script type="text/javascript">
function test(){
jQuery(".integer")
                            .keydown(
                                    function(event) {
                                        //do your stuf


        });
};
jQuery(document)
        .ready(test();
              );      
</script>

组件更新目标组件应调用此test()函数,如:

<p:commandButton oncomplete="test();" update=":COMPONENT_ID_HERE" ..../>