将数组与JavaScript中的文本进行比较

时间:2014-01-25 06:41:12

标签: javascript jquery arrays compare

如何检查所有文档的元素'data属性,如果属性的内容与数组中的值匹配,可以做些什么?

我通过从文本输入中获取namevalue属性来创建一个数组。例如,我希望将名称“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}}只是为了看到有效的东西)。我如何使用它并使其模块化,以便它只运行所有元素,遍历数组,如果两个值匹配,做一些事情?

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);
    }
});