使用指令设置camelCase中元素的属性值

时间:2014-10-20 01:45:00

标签: javascript html angularjs angularjs-directive

我正在尝试从这样的指令向angularJs元素添加属性:

element.attr('startOffset', val);

但是当我检查元素时,添加的属性是'startoffset',其中'o'不是大写字母。

有没有办法为元素添加属性并保持单词的大小写完整?

由于

2 个答案:

答案 0 :(得分:3)

如果使用jqliteWrapper .attr设置属性,或者甚至使用直接DOM操作.setAttribute,则在附加到元素之前,它将小写属性名称。

  

当调用HTML文档中的HTML元素时,setAttribute会将其属性名称参数设置为小写。

由于您正在使用SVG尝试使用setAttribute进行直接操作,但设置属性使用SVG保留其大小写,不确定jquery是否在内部进行任何转换。

 element[0].setAttribute('startOffset', val);

<强> Plnkr


确认它是在angular之前的jquery包含,它导致它在通过.attr设置时不保留属性名称大小写,但如果你不包括jquery和angular回到jqLit​​e,它将设置属性名称因此,除了直接DOM操作之外,它将与SVG一起工作(以及attrs.$set)。

答案 1 :(得分:0)

setAttributeNS使用给定的名称空间和名称添加新属性或更改属性值

  

element.setAttributeNS(命名空间,名称,值)

namespace是一个字符串,用于指定属性的名称空间。 name是一个通过限定名称标识属性的字符串;也就是说,名称空间前缀后跟冒号,后跟本地名称。 value是新属性的所需字符串值。