有没有一个 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 是 Raphael Canvas 。
最佳答案
您似乎对两种类型的节点包装对象感到困惑。在您的代码中,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 ,是一个键值对字符串,表示有关该节点的任何信息。
关于javascript - jquery 有没有列出属性的函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24512178/