jQuery 事件绑定(bind)

标签 jquery jsf richfaces

环境:JSF 1.2 RI、RichFaces 3.3.2

我们利用 jQuery 来在项目获得或失去焦点时更改 CSS 类。这非常简单,但是当我们的部分渲染完成时,我们没有看到这些焦点和模糊事件绑定(bind)到新渲染的表单元素。这是可以预料的,因为文档准备好后这些事件不在 DOM 上,但是我们尝试使用几个插件(Listen 和 LiveQuery),因为 .live() 不能正确处理模糊和焦点事件在 1.3.2 中,也不在随 RichFaces 提供的版本中。这些插件中的每一个都应该处理放置在文档上的新创建的项目。但实际上,这些都没有按预期运行。

我们将输入/选择/文本区域包装在 div 或 span 中,以便根据 Ajax 请求更新各个部分的渲染。这是由于 RichFaces 中的限制,即在部分重新渲染时不会检查项目的渲染。除了那一小部分之外,没有什么太令人兴奋的事情发生。

我使用 $('ol').after(txtForNewListItem) 添加了项目,并确认 livequery 可以正确地处理这些项目,但不适用于由 JSF 新渲染的项目。

有人有类似的结果并找到合适的解决方法吗?我确实看到的一种方法是覆盖 document.createElement,但我们真的希望不惜一切代价避免这条路径。

最佳答案

如果我理解正确,您可以在文档准备好后添加 HTML 内容,使用 $('ol').after(txtForNewListItem)

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

  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")
    );

您需要对这段代码进行一些修改,但希望它能让您了解需要做什么。

啊...找到了我的帖子,在那里我得到了答案。看看这里:Not able to bind click event to newly created span items (jQuery)

关于jQuery 事件绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2009022/

相关文章:

jsf - tomcat 上的 Primefaces 标记库,从有效的 jsp 文件呈现空白页面

java - 将 Richfaces 添加到 Maven 项目

java - 事件未在 richfaces 中调用

jquery - 如何使用jquery添加html

php - 使用 Js/Jquery 和 PHP 进行表单验证

jquery - 用于在线/离线移动同步的库

javascript - JQuery:如何在文本中插入 HTML ascii 字符?

java - 在身份验证完成之前获取 j_username

java - 如何为 primefaces 1.1 设置皮肤

java - 丰富 :pickList selection buttons arrow in right-to-left language direction