- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
这个问题几乎有人问过here ,主要区别在于我想通过 id
专门访问元素通过 Polymer 的 this.$
句法。 是链接问题的答案,说明如何执行此操作,但它在我的实例中不起作用,而且我认为我没有做任何特别的事情(这让我觉得这个答案是错误的)。 编辑:我已经按照建议在此处用我的解决方案回答了这个问题,但我认为使用元素 id
的特殊性仍然保证这个问题是分开的。
那么,进入正题。我有以下设置:
<div id="anElement">Content</div>
<template is="dom-repeat" items="{{myItems}}">
<div id="{{item.name}}>{{item.content}}</div>
</template>
<button on-click="listElements"></button>
...
properties: {
myItems: {
type: Array,
value: function() {
return [
{ name: "item1", content: "First item" },
{ name: "item2", content: "Second item" }
]
}
}
},
listElements: function(e) {
console.log("this.$: ", this.$);
}
点击按钮的输出:
this.$:
anElement: div#anElement.style-scope
我可以检查结果页面上的 HTML 并看到有两个 <div>
具有预期 ID 的 item1
和 item2
, 但它们未在 listElements
的输出中列出.
实际上,dom-repeat
中的元素其他自定义元素具有我需要在点击处理程序中访问和使用的方法,但不能直接访问它们是一个问题。
我检查了一些 Polymer documentation ,并没有找到造成这种情况的原因。
最佳答案
好吧,在对文档进行更多挖掘之后,答案就在那里。只是想我会分享,因为我看到那里的答案是错误的!
来自 Node Finding in the Local DOM 上的文档:
Polymer automatically builds a map of statically created instance nodes in its local DOM, to provide convenient access to frequently used nodes without the need to query for them manually. Any node specified in the element’s template with an id is stored on the this.$ hash by id.
Note: Nodes created dynamically using data binding (including those in dom-repeat and dom-if templates) are not added to the this.$ hash. The hash includes only statically created local DOM nodes (that is, the nodes defined in the element’s outermost template).
...
For locating dynamically-created nodes in your element’s local DOM, use the $$ method:
this.$$(selector)
$$ returns the first node in the local DOM that matches selector.
(上面文字中的强调是我的)
个人笔记:
注意:请注意,this.$$ 不是一个对象,而是一个方法。因此,使用 this.$$
简单地打印所有具有 id
的元素不是可行的,但是定位一个特定的动态创建的元素 是,这实际上是我需要它的目的 - 可能你也需要它:)
注意 2: 在实际采纳我自己的建议并使用 this.$$(selector)
后添加此内容。请记住它是一个选择器,因此如果您要通过其 id
查找元素,请记住以 #
开头,即 this.$$('#我的元素')
!
关于 polymer 1.0 : Accessing elements by id in dom-repeat,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35273177/
下面两个CSS选择器有什么区别? 来自解释here ,它们听起来一样吗? div p{} 选择div元素内的所有p元素 div > p{} 选择父级为 div 元素的所有 p 元素。 最佳答案 区别在
我需要怎么做: 目前,事实证明: 我更喜欢它看起来像: 最佳答案 有了这些空行,看起来您的 select 语句是(正确地)选择您
用替换元素是否有效至 .在这种情况下,我想要, 这样我就可以在...中附加验证数据。这也可以从 中实现吗?或 等等? 最佳答案 标签没有 而且不需要一个。同样适用于 和 .您可以将验证数据作为
我刚刚发现了 Angular 1.2.1 的一个奇怪问题,在 this fiddle 中进行了演示。 (在 IE、FF 和 Chrome 中测试):如果我创建一个非常简单的模板化指令,它无法像 那样
我正在尝试使用 Jsoup 迭代 java 中的两个元素,但是,我收到运行时异常错误。看来我无法将nodes.Element 的类型转换为element.Element。 非常感谢您的帮助,谢谢。 代
假设我的文档中有一组元素,它们是单个对象的子元素。这些元素中的每一个都使用不同的参数注册一个新的事件监听器。如果我丢弃父对象,是否需要手动取消注册所有 eventListener?或者浏览器是否跟踪所
我不应该在我的应用程序中使用 jQuery,但我有一个场景,我需要元素的偏移量,而不是使用 $(element).offset() 我已经使用了 angular.element(element).of
我是TS的新手,我想知道为什么我在以下代码中遇到类型错误(简化):。错误在`{iconMap[名称]}中:。“元素隐式具有‘any’类型,因为‘字符串’类型的表达式不能用于索引类型‘{Categori
我是TS的新手,我想知道为什么我在以下代码中遇到类型错误(简化):。错误在`{iconMap[名称]}中:。“元素隐式具有”any“类型,因为”string“类型的表达式不能用于索引类型”{ Cate
什么意思: Separator.Iterator.Element == Self.Iterator.Element.Iterator.Element 在this (Swift 标准库)swift 实例
是否可以在 img 元素上使用前后伪选择器?认为它是但没有任何运气,将 css 切换到 div 并且它工作正常。 .page-overhang 类是 img 元素。 // page overhang
我在 UI 中的按钮 Click 事件上有以下代码,它返回一个 MS-Excel 文件。它在第一次点击事件中完美运行,但之后返回以下错误。 任何建议,我怎样才能摆脱它? ERROR: Uncaught
如何在 CSS 中编写这个想法: 选择 ElementA 内但不在 ElementB 内且 ElementB 在 ElementA 内的每个元素。 这是一个例子:
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
如果我在 C# 中的 XElement myXML 变量中有以下 XML, myvalue 要获得“myvalue”,我需要执行以下操作: myXML.Element(
我找不到用户名和密码字段。我检查元素,并尝试通过 id、xpath 或 css 选择器查找它,但它给出错误 NoSuchElementException: Message: no such eleme
我的任务是在用户点击它时从输入框中删除占位符并使标签可见。如果用户未在其中再次填写任何内容,请放回占位符并使标签不可见。 我可以隐藏它但不能重新分配它。我试过 element.setAttribute
我正在编写一个 c# 类来编写一个 XML 文件,该文件需要与我们使用的现有 XML 的结构完全匹配,这样一些遗留系统就不会混淆。 当一个元素的InnerText值为null时,我需要xml元素的元素
自定义元素的一个常见做法,至少在 Polymer(最流行的 Web 组件框架)中,是定义一个新的自定义元素。恕我直言,这对 来说不是一个好习惯呈现 元素,因为该元素无法逐步呈现,必须等到它被加载(注册
我正在尝试跟踪元素的可见性及其显示的控制台错误:“元素“a[data-vars-ei]”必须是 AMP 元素”。 但是在点击跟踪的情况下,类似的事情工作正常。 我无法理解为什么会发生这种情况以及我应该
我是一名优秀的程序员,十分优秀!