无法用jQuery找到某些元素,即使它们在那里
Can't find certain elements with jQuery even though they are there
我将以下HTML代码存储为变量:
<body>
<div>
<table>
<field id='Contact Name' required>
<exists>$value<br></exists>
<notexists></notexists>
</field>
<field id='Job Role' required>
<exists>$value<br></exists>
<notexists></notexists>
</field>
</table>
</div>
</body>
</html>
现在,我要做的是访问这段代码,并根据我的表单中的输入更改每个字段的$value值,然后在iFrame中呈现最终的html。
下面是我使用的JavaScript代码:
function renderTemplate() {
var template = $(selectedTemplate.html).contents(); //HTML code I have given above.
$("input").each(function(index, input) {
var element = $(input); //<input type="text" ref="Contact Name">
if (element.attr("ref")) {
var reference = element.attr("ref");
var field = template.find("field[id='" + reference + "']");
if (typeof(field) != undefined) {
var exists = field.find("exists");
var notExists = field.find("notexists");
if (typeof(exists) != undefined && typeof(notexists) != undefined) {
if (element.val()) {
exists.html(exists.html().replace("$value", element.val()));
} else {
exists.html(notExists.html());
}
$('#signaturePreview').contents().find('html').html(template.html());
}
}
}
});
}
现在,不管什么原因,它不能找到我给的选择器的字段。
我用chrome控制台做了一些测试,它根本找不到任何字段,即使我使用:
template.find("field") // Gives 0 results.
$("#..").contents().find("..")
将始终返回空数组,不要使用.contents
,即:
var template = $(selectedTemplate.html);
解决其他一些问题:
id中的1空格不是有效的HTML,但您可以使用[id=
https://stackoverflow.com/a/701958/2181514 选择它们。
2 jquery .find
将返回一个空数组[]
,而不是undefined
,当它找不到任何匹配。您通常会检查长度,例如:
var items = $("body").find("li.item");
if (items.length > 0) {
...
相关文章:
- 如何使该数据在所有元素中加载
- 带有填充属性的SVG矩形显示在包含元素的上方插入框阴影
- HighCharts长标题文本在某些元素上重叠
- 在select元素中显示highchart dashstyle(svg)
- 使用fullpagejs在固定元素上滚动
- 如何在一个元素动画之后延迟
- 如何在父元素'的子项被单击
- 将鼠标悬停在同级元素上的 jquery 上轻拂
- 在选定元素中自动完成
- 如果选择了当前年份,则在Select元素中仅显示当前和未来月份
- Jquery在所有元素上单击激发
- 如何使用Jquery水平打印表中的数组元素,并在某个元素之后垂直打印
- 在contentEditable元素中居中占位符插入符号
- Angular2-*ngFor和*ngIf在同一个元素上产生错误
- 如何激活下拉菜单:在一个元素上单击768px宽度下方,在另一个元素上将鼠标悬停在768px上方
- 在所有元素中插入HTML
- 关于在动态创建的元素中添加预先样式化的类或在那里添加stying&然后
- 拉斐尔将元素放在右边,并在那里缩放
- 不要让AngularJS和D3工作- SVG元素在那里,但没有生成图表
- 无法用jQuery找到某些元素,即使它们在那里