如何检查所有文档的元素'data
属性,如果属性的内容与数组中的值匹配,可以做些什么?
我通过从文本输入中获取name
和value
属性来创建一个数组。例如,我希望将名称“X”的value
与数据属性为“X”的span
的值进行比较。
我目前的代码是:
bulletinPreview.prototype.updatePreview = function () {
var dataValues = new Array();
$(".edit-bulletin input[type=text]").each(function () {
var $this = $(this),
dataName = $this.attr("name"),
dataValue = $this.attr("value");
dataValues.push({
"name": dataName,
"value": dataValue
});
});
$(".bulletin-preview .editable").each(function () {
var $this = $(this);
if ($.inArray($this.data("title"), dataValues.name !== -1)) {
$this.text(dataValues[1].value);
}
});
};
它替换了data-title
title
value
第二个dataValues[1]
的所有元素的文本(因为我明确地说{{1}}只是为了看到有效的东西)。我如何使用它并使其模块化,以便它只运行所有元素,遍历数组,如果两个值匹配,做一些事情?
答案 0 :(得分:0)
我认为你正在寻找这个:
var $preview = $(".bulletin-preview");
$.each(dataValues, function(index, entry) {
var $edit = $preview.find('.editable[data-title="' + entry.name + '"]');
$edit.text(entry.value); // No-op if no match
});
假设没有一个名字包含双引号。
如果重复搜索$preview
打扰您,您可以进行一次搜索并自己制作地图:
var map = {};
$(".bulletin-preview .editable").each(function() {
map[this.getAttribute("data-title")] = this;
});
$.each(dataValues, function(index, entry) {
var edit = map[entry.name];
if (edit) {
$(edit).text(entry.value);
}
});