无法在AngularJS中更改CSS样式

Clé*_*let 22 css angularjs

出于某些原因,我无法使用以下内容更改元素的样式:

angular.element("#element").style.height = 100px;
Run Code Online (Sandbox Code Playgroud)

我确信它angular.element("#element")有效,因为它返回一个DOM元素.另外,这有效:

angular.element("#element").addClass('something');
Run Code Online (Sandbox Code Playgroud)

(我发现的一切都是关于ngStyle但我不认为这是我正在寻找的?)

我应该用别的吗?

如果是的话:什么?为什么.style.something不起作用?

gka*_*pak 53

根据文件:

注意:Angular中的所有元素引用始终用jQuery或jqLit​​e包装; 它们永远不是原始的DOM引用.

因此,该.style物业不是直接提供的,因为它是包裹物的财产HTMLElement.


您可以使用ivarni的方法来获取HTMLElement(angular.element(...)[0].style...)或使用jQuery的/ jqLit​​e的.css()方法:

angular.element('#element').css('height', '100px');
Run Code Online (Sandbox Code Playgroud)

  • 对我不起作用.这有效:`angular.element(document.querySelector("#element")).css("height","100px")`. (2认同)

iva*_*rni 12

Angular element返回包装DOM元素的东西,而不是DOM元素本身.您可以像使用JQuery选择器一样访问底层元素.

angular.element("#element")[0].style.height = 100px;
Run Code Online (Sandbox Code Playgroud)

那当然假设你有一个匹配,你应该在使用ID时.

  • 什么?难道你没有得到"jqLit​​e不支持通过选择器查找元素!..." (2认同)
  • 我并没有试图"傲慢",我只是说如果他没有加载JQuery那么他可能会问为什么选择器不起作用.因为他明确表示选择器工作,这意味着他确实加载了它. (2认同)