4

我正在使用 ZK,我想从 js 获取 zk 元素的 id。我使用了不同的方式:

像原生 html 一样声明组件,它从 js 获取 id,但它不正确。我已经使用 ZK 的 html 标签声明了该元素,但也不正确。我已经看到了一些像 Component.getFellow('component_name') 这样的函数,最后我已经阅读了 UUID 并使用了一些示例代码,但我不能使用元素 id,例如:

<label id=titleBook/>

来自 JavaScript。

任何的想法?谢谢你。

4

2 回答 2

7

您遇到的问题是id在 ZUL(ZK 标记)中分配的元素与呈现的 DOM 元素 id 不是一对一的。ZK 这样做的原因有很多,但需要注意的是,您需要在不知道其 id 的情况下引用 DOM 元素。

ZK 还为您提供了一个 JavaScript 框架,使这变得容易,他们经常将其称为“客户端编程”。

查看 ZK 关于客户端编程的文档,特别是关于“如何在 JavaScript 中获取小部件参考”的段落。

在这里,您将看到ZK JavaScript API提供

<zk xmlns:w="http://www.zkoss.org/2005/zk/client">
    <label id="titleBook"/>
    <button label="button"
            w:onClick="this.$f('titleBook').setValue('sean is cool')" />
</zk>

请注意,我将命名空间定义为 ZK 的客户端库,只是为了触发我可以访问w的客户端事件,即Button 小部件onClickthis

听起来您可能正在使用香草 JS 做一些类似的事情。

<zk>
    <script defer="true">
        jq("$titleBook").css('color', 'green');
        zk("$titleBook").setValue('sean is cool');
    </script>
    <label id="titleBook"/>
</zk>

在这里,我们利用ZK JavaScript API 中的jq()和全局变量。zk()前者只是 jQuery 的$(),后者是 ZK 的对应物。不同之处在于 jQuery 函数返回一个 jQuery 对象,而后者返回一个 ZK 小部件。两者都被扩展以支持新的$CSS 样式选择器,它引用 ZK 小部件 ID(您在 ZUL/Java 中分配的内容)。

于 2013-08-16T15:50:59.903 回答
0

试试这个;

zk.Widget.$(jq('$titleBook'))
于 2016-04-18T10:27:19.147 回答