如何从js获取zk元素id

时间:2013-08-14 12:34:15

标签: javascript zk

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

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

<label id=titleBook/>

来自javaScript。

任何想法? 谢谢。

2 个答案:

答案 0 :(得分:7)

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

ZK通过为您提供JavaScript框架使其变得简单,他们将其称为“客户端编程”。

查看ZK关于客户端编程的文档,特别是"How to Get Widget Reference in JavaScript"上的段落。

在这里,您会看到ZK JavaScript APIs提供

<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>

请注意,我将w命名空间定义为ZK的客户端库,只是为了触发我有权访问onClick Button widget的客户端this事件。

听起来你可能在香草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小部件。两者都被扩展为支持引用ZK小部件ID的新$ CSS样式选择器(在ZUL / Java中分配的内容)。

答案 1 :(得分:0)

试试这个;

zk.Widget.$(jq('$titleBook'))