我正在使用ZK,我想从js获取zk元素的id。 我使用了不同的方式:
将组件声明为原生html,并从js获取id,但这不正确。 我已经使用ZK的html标签声明了元素,但也不正确。 我已经看到了一些像Component.getFellow('component_name')这样的函数,最后我读到了UUID并使用了一些示例代码,但我不能将元素id作为例子:
<label id=titleBook/>
来自javaScript。
任何想法? 谢谢。
答案 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'))