【发布时间】:2018-06-13 12:08:33
【问题描述】:
我有我的模板类似的东西,
<ul id="items">
{{#each items as |item index|}}
<li>
<!-- <input type="checkbox" id={{concat "pf" index}} /> -->
{{input type="checkbox" id=(concat "pf" index)}}
</li>
{{/each}}
</ul>
我的 js 是这样的,
import Ember from "ember";
export default Ember.Controller.extend({
appName: "Ember Twiddle",
items: [{}],
init: function() {
$(document).on("click.somename", function (e) {
alert($(e.target).parent().length); //should get parent as "li" and length as 1
});
}
});
我的项目发生的情况是,如果我单击 ember 输入助手,我将无法使用 jQuery 获取 parentElement。但是当我将该输入助手更改为正常的<input type="checkbox" /> 时,我能够获得parentElement。我不知道 Safari/Ember 是否使用任何虚拟 DOM 或其他东西来呈现它自己的助手。 此问题仅在 Safari 中发生。在 Chrome 中,它运行良好。
不幸的是,我无法制作小提琴/plunker,因为该问题无法在其中复制。对于那个很抱歉。在我的项目中,我使用的是ember@2.7.3。
关于这个问题有什么建议/帮助吗?
【问题讨论】:
-
您要查找
<li>?因为那是<input>的父级。是的,ember 使用glimmervm 来渲染所有内容,但这应该可以。但是,您到底为什么要使用 jQuery 而不是本机 ember 操作?另外,也许您可以提供ember-twiddle甚至是带有复制的git repo?这也可能与余烬事件有关,但我不确定,因为您不在这里使用它们。但也许you should read this. -
给定的代码只是一个示例,只是为了更清楚地说明问题。为什么我使用 jQuery 事件实际上是我创建了一些类似组件的下拉菜单,所以当我点击外部时它应该隐藏下拉菜单。这就是为什么添加
$(document).on("click", () => {})。在ember-twiddle中,我试图重现,但它似乎一切正常 -
这看起来很奇怪,我怀疑它是一个余烬问题。你是如何使用纯 javascript 而不是 jQuery 的?也许尝试一些调试。你能在一个新的 ember 项目中重现并分享一个 git(hub?) repo 吗?
-
嘿,我忘了说这个问题只发生在 Safari 中。对于那个很抱歉。编辑了这个问题。我会尝试在
ember-twiddle或repo中重现一些东西
标签: javascript jquery dom ember.js safari