1

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

在每个 Each() 中,通过 var 附加按钮。但是在每个按钮插入之后, Each() 会覆盖 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>";
});

我该怎么做呢??

先感谢您... :-)

4

3 回答 3

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)

于 2011-06-01T12:50:08.287 回答
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(....

于 2011-06-01T12:51:03.043 回答
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();
于 2011-06-01T12:52:11.530 回答