是否有可以列出对象属性的jquery函数?我试图用它来了解为什么我没有设置属性" fill"在
$(document).ready(function(){
$('#emitterButton').click(function(){
$(this).attr({'fill':BUTTON_COLOR_PRESSED});
});
});
。作为参考,#emitterButton
指的是
emitterButton = canvas.circle(emitter_center_x,emitter_center_y,BUTTON_RADIUS)
.attr({'fill':BUTTON_COLOR_UNPRESSED})
.attr({'id':'emitterButton'});
,canvas是拉斐尔画布。
答案 0 :(得分:3)
您似乎对两种节点包装对象感到困惑。在您的代码中,emitterButton
引用Raphael对象 - 由canvas.circle
创建,attr
作为可用于更改其状态的方法。
但是在事件处理程序中,$(this)
会为您提供jQuery
个对象。巧合的是,它还具有attr
方法 - 但它只会更改底层DOM节点属性而不会触发相应的事件。
解决方案是通过id
(使用Raphael的Paper.getById(id)方法)再次找到相应的对象:
$('#emitterButton').click(function(){
canvas.getById('emitterButton')
.attr({'fill':BUTTON_COLOR_PRESSED});
});
......或者,有时甚至更好,只需缓存对象:
$('#emitterButton').click(function(){
emitterButton.attr({'fill':BUTTON_COLOR_PRESSED});
});
最后,但绝对不是最不重要的,您只需将点击处理程序附加到Raphael的对象(通过Element.click()方法)。
这解决了代码中的实际问题。 )为了完整性,原始问题的答案很简单 - 如果您在$el
中存储了jQuery对象,则可以使用此表示法访问其属性列表:
$el[0].attributes
...根据the docs,是一个键值对的字符串,表示有关该节点的任何信息。