添加/删除样式时使用dojoAttachpoint的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了添加/删除样式时使用dojoAttachpoint的问题相关的知识,希望对你有一定的参考价值。

我有一个div如下所示:

<div id="xyz" dojoAttachPoint="xyz" style="display: none;">  </div>

现在我想显示/隐藏它。如果我使用dojo.byID这样做,它的工作原理。但是,如果我使用dojoAttachppoint它,它不能正常工作。我没有收到任何错误,但没有发生变化。

dojo.byId("xyz").style.display="none";
dojo.byId("xyz").style.display="";


this.xyz.style.display ="none";
this.xyz.style.display ="";

可能是什么问题?

答案

您是否在使用基类dojo.declaredijit._Templated声明的类中的模板中使用上述内容?

您对附加点的理解是不明确的。当dijit._Templated解析tenmplate时,当它看到“dojoAttachPoint”属性时,它将在dijit对象中创建一个带有附加点名称的属性。因此,“xyz”是dijit类对象中的属性。在读取模板时,名称取自名为“dojoAttachPoint”的属性。之后不再使用dojoAttachPoint属性。

如果“this”指向您创建的dijit类,this.xyz将指向DOM元素(即div),而不是小部件。因此它没有“domNode”属性。跟踪dijit/_Templated.js line#191中的源代码以确认。

因此,你需要做一些console.log调用来确认this.xyz正在返回正确的div。如果是,那么你可以尝试dojo.style(this.xyz, "display", "none")看看你是否可以隐藏它等。

至于为什么this.xyz.style.display = "none"无法工作,它可能是一个特定于浏览器的东西,因为它应该与dojo.style做同样的事情。你需要深入挖掘才能找到答案。

以上是关于添加/删除样式时使用dojoAttachpoint的问题的主要内容,如果未能解决你的问题,请参考以下文章

js怎么删除css的行内样式

在Vue中更改页面时如何删除样式表

空样式 (.css/.scss) 文件

jquery 如何动态添加、删除class样式

jQuery如何为指定标签添加和删除一个样式

jquery为指定的元素添加或者删除指定样式类