是否有一个jquery函数来列出属性

Is there a jquery function to list attributes?

本文关键字:属性 函数 有一个 jquery 是否      更新时间:2023-09-26

是否有一个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为拉斐尔画布。

您似乎对两种类型的节点包装对象感到困惑。在您的代码中,emitterButton引用由canvas.circle创建的Raphael对象,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

…根据文档是一个键值字符串对,表示关于该节点的任何信息。