jQuery: уникальный Every () var append - PullRequest
1 голос
/ 01 июня 2011

Я добавляю несколько кнопок из XML-файла в несколько элементов div. У каждого элемента есть одна или две кнопки.

В каждом Each () добавляйте кнопки через переменную. Но после каждой вставки кнопки Each () перезаписывает переменную.

Как мне создать уникальную переменную для каждого приложения ??

Это «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 ]

2 голосов
/ 01 июня 2011

просто + к равному, и он объединит строку

$(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 голос
/ 01 июня 2011

Если вы имеете дело с одной большой строкой, вы можете просто объединить ее, например, так:

$(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();
1 голос
/ 01 июня 2011

Вы можете создать массив:

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(....

...