【问题标题】:difficult use of Tapestry zones - changed ids难以使用 Tapestry 区域 - 更改了 ID
【发布时间】:2012-11-08 16:30:43
【问题描述】:

当我使用tapestry 5.3.6、CSS、jQuery(使用tapestry5-jquery 3.3.3)javaScript 时出现一些问题。

当我设置一个具有区域的页面(我正在使用 jQueryUI 选项卡)然后从一个切换到另一个刷新我制作的一些组件时,由于标签 ID 的更改,一些元素失去了它们的样式。我用嵌入式样式解决了这个问题,但现在有另一个问题。

我已经使用 jQuery 将一些事件绑定到一些元素。区域切换后,某些元素会丢失其事件。我已经通过 onActivate 函数中的事件绑定解决了这个问题。此外,当元素的 id 发生变化时,jQuery 选择器会出现问题,但可以通过条件选择器来解决。

有没有更优雅的方式来处理挂毯中的这类问题?我现在所拥有的非常令人困惑,并且给我的项目带来了更多的复杂性。

【问题讨论】:

  • 我正在使用 jquery.tabs 组件来创建自己的区域。

标签: jquery css tapestry


【解决方案1】:

如果您的区域不是在循环中创建的,您可以将区域的t:idid 设置为相等:

<t:zone t:id="myId" id="myId" />

这将在区域更新时停止 Tapestry 分配新的 Id。

【讨论】:

  • 它在我的情况下不起作用,因为我使用的是 jquery.tabs 组件,它有自己的区域。我不知道我是否可以按照您的建议更改其 id。
  • 这听起来像一个 Tapestry-jquery 错误,但如果只是样式您担心为什么不使用类名而不是 id 应用样式?
  • 类名已经给定了,如果在页面加载时使用jQuery添加更多的类名会更脏。
  • "那你就不高兴了" ;)
【解决方案2】:

我试图通过关闭组件ajax.tabs 中的 t:ajax 标志来解决我的问题,这将排除区域的使用。似乎解决了我的问题,但问题仍然存在,因为我可能希望在其他情况下打开 ajax 行为。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-03
    • 2019-09-19
    相关资源
    最近更新 更多