jQuery事件绑定

环境:JSF 1.2 RI,RichFaces 3.3.2

我们利用jQuery来在项目获得或失去焦点时更改CSS类。 这是非常直接的,但是当我们的部分渲染完成时,我们没有看到这些焦点和模糊事件绑定到新呈现的表单元素。 这是可以预料的,因为这些事件不在文档准备就绪的DOM上,但是我们试图利用一些插件(Listen和LiveQuery),因为.live()对模糊和焦点事件不起作用在1.3.2中,也不在RichFaces提供的版本中。 这些插件中的每一个都应该处理放置在文档上的新创建的项目。 实际上,虽然这些都不如预期的那样。

我们将输入/选择/ textareas包装在div或span中,以便在我们的Ajax请求上更新各个部分的渲染。 这是由于RichFaces中的限制,其中在部分重新呈现时未检查项目的呈现。 除此之外,没有什么太刺激的事情发生。

我已经使用$('ol')。添加了项目(txtForNewListItem),并确认livequery正确地为这些项目工作,而不是针对刚刚由JSF呈现的项目。

任何人都有类似的结果,并找到一个合适的解决方法? 我所看到的一种方法是重写document.createElement,但我们真的希望不惜一切代价避免这种路径。


如果我理解你是正确的,那么在文档准备好之后,使用$('ol').after(txtForNewListItem)添加HTML内容。

所以你需要重建你的列表。 我做类似的事情。 这里是“伪”代码:

  ol.append(
     jQuery("<li/>")
     .attr("id", "someID")
     .append(jQuery("<span/>")
        .addClass("btnRemoveItem")
        .attr("title", "Remove item from list")
        .attr("id", data[i].id)
        .click(function() { alert('hello') })
      )
    .append("txtForNewListItem")
    );

你需要在这段代码上工作一下,但希望它能让你知道你需要做什么。

啊...找到我的线索,我得到了答案。 看看这里:无法将点击事件绑定到新创建的span项目(jQuery)


RichFaces将它作为rich:jQuery组件来构建。 将选择器属性设置为您在jQuery语句中使用的内容。 将查询设置为您希望调用的函数。 如果您重新绑定了在载入时设置的元素,那么您还需要命名组件,因为它们不会经历完整的重新渲染生命周期,并且不会有更新。

 rich:jQuery id="focusEventBinder" selector="#arbitraryId" 
             query="focus(function () { jQuery(this).addClass('onfocus');});" 
             name="focusEventBinder"

要解决这个问题,只需让你的组件对你想调用的rich:jQuery组件的名称有一个oncomplete属性即可。 所以在上面的例子中,我们需要将它添加到我们的组件中:

oncomplete="focusEventBinder();"
链接地址: http://www.djcxy.com/p/71645.html

上一篇: jQuery event binding

下一篇: How to edit the text color in .txt files in Eclipse