jQuery:Unique Each()var append

时间:2011-06-01 12:45:18

标签: jquery append each var

我将一些XML文件中的按钮附加到一些div中。每个div都有一个或两个按钮。

在每个()中,通过var附加按钮。但是在每个按钮插入之后,每个()都会覆盖var。

如何为每个追加创建一个唯一的var?

这是我想要的“buttonMarkup”,作为独特的变种,所以它们不会互相覆盖......

$(this).find('button', this).each(function(index) {
    var type = $(this).attr("type");
    var label = $(">label", this).text();
    var wunLink = $(">link", this).text();
    buttonMarkup = "<a href='" + wunLink + "' class='" + type + "'><span>" + label + "</span></a>";
});

我该怎么做?

提前谢谢......: - )

3 个答案:

答案 0 :(得分:2)

只是一个+到相等,它将连接字符串

$(this).find('button', this).each(function(index) {
    var type = $(this).attr("type");
    var label = $(">label", this).text();
    var wunLink = $(">link", this).text();
    buttonMarkup += "<a href='" + wunLink + "' class='" + type + "'><span>" + label + "</span></a>";
});

那么你将在buttonMarkup中有一个长字符串可用于追加(buttonMarkup)

答案 1 :(得分:1)

你可以创建一个数组:

var buttonMarkup = [];

$(this).find('button').each(function(index) {
    var type = $(this).attr("type");
    var label = $(this).children("label").text();
    var wunLink = $(this).children("link").text();
    buttonMarkup.push("<a href='" + wunLink + "' class='" + type + "'><span>" + label + "</span></a>");
});

或只是附加到变量:

buttonMarkup += "<a href='...";

另请注意,它应为$(this).find('button').each(...

答案 2 :(得分:1)

如果你正在处理一个大字符串,你可以连接,就像这样:

$(this).find('button').each(function(index) {
    var type = $(this).attr("type");
    var label = $(">label", this).text();
    var wunLink = $(">link", this).text();
    buttonMarkup += "<a href='" + wunLink + "' class='" + type + "'><span>" + label + "</span></a>";
});

或者,如果你想要单独的变量,我推荐一个你可以添加(.push())和管理的数组,如下所示:

var buttonMarkupArray = [];
$(this).find('button').each(function(index) {
    var type = $(this).attr("type");
    var label = $(">label", this).text();
    var wunLink = $(">link", this).text();
    buttonMarkupArray.push("<a href='" + wunLink + "' class='" + type + "'><span>" + label + "</span></a>");
});

例如,将其转换为字符串只是一个简单的.join(),如下所示:

var buttonMarkup = buttonMarkupArray.join('');

您还可以使用.find()进一步清理您的选择器,这将更好地使用原生选择器引擎,如下所示:

var buttonMarkupArray = [];
$(this).find('button').each(function(index) {
    var type = $(this).attr("type");
    var label = $(this).find("label").text();
    var wunLink = $(this).find("link").text();
    buttonMarkupArray.push("<a href='" + wunLink + "' class='" + type + "'><span>" + label + "</span></a>");
});

甚至更好地使用.map(),如下所示:

var buttonMarkupArray = $(this).find('button').map(function() {
    var type = $(this).attr("type");
    var label = $(this).find("label").text();
    var wunLink = $(this).find("link").text();
    return "<a href='" + wunLink + "' class='" + type + "'><span>" + label + "</span></a>";
}).get();