#jquery #function #parameters #each
#jquery #функция #параметры #каждый
Вопрос:
Я пытаюсь передать текстовые значения html-элементов с определенным классом в качестве параметра функции внутри каждой функции.
На выходе возвращается только последнее переданное текстовое значение.
Я хотел бы присвоить каждое текстовое значение функции, содержащейся в элементе рядом с ним, чтобы она возвращала значение в качестве параметра для функции каждого отдельного блока html-кода.
Код jQuery :
$(".optin-holder").each(function(index,obj) {
$(this).html("<div class='contentOptin'>" new Optin($(this).next().text()) "</div><br/><br/>");
//$(this).html("<div class='contentOptin'>" $(this).next().text() "</div><br/><br/>");
});
function Optin(promoNumber){
var promo = promoNumber;
var content = '<input onclick="javascript:saveActivity(' promo ')" type="button" name="logOptin" value="PARTICIPAR" class="btn btnParticipate" />';
$(".contentOptin").html(content);
}
HTML :
<div class="offerBoxAll">
<div class="optin-holder">
<div class="contentOptin">
<input class="btn btnParticipate" onclick="javascript:saveActivity(1284)" name="logOptin" value="PARTICIPAR" type="button">
</div>
</div>
<div class="test">1283</div>
</div>
<div class="offerBoxAll">
<div class="optin-holder">
<div class="contentOptin">
<input class="btn btnParticipate" onclick="javascript:saveActivity(1284)" name="logOptin" value="PARTICIPAR" type="button">
</div>
</div>
<div class="test">1284</div>
</div>
Как вы можете видеть, она передает только последнее значение на каждую итерацию.
Мне нужно передать значение .test
класса прямо рядом с каждым .contentOptin
классом.
Прокомментированная строка дает мне значение, которое мне нужно для каждой итерации, но не находится внутри функции в качестве параметра. Optin(param)
Функция добавляет некоторый код, который передает значение текста .test
класса в saveActivity(param)
функцию в качестве параметра внутри элемента с .contentOptin
классом.
Комментарии:
1. На самом деле не могу воспроизвести это -> jsfiddle.net/adeneo/zym4gsrp
Ответ №1:
Замените $(this).next().text()
на $(this).find(".test").text()
.
$(this).find(".test").text()
найдет значение div
наличия test
класса для каждого optin-holder
div
.
Изменение Js
$(".optin-holder").each(function(index,obj) {
$(this).html("<div class='contentOptin'>" Optin($(this).find(".test").text()) "</div><br/><br/>");
// $(this).html("<div class='contentOptin'>" $(this).next().text() "</div><br/><br/>");
});
Комментарии:
1. Извините, я неправильно ввел HTML-код, теперь правильный, в котором элемент с class .test не является потомком элемента с class .optin-holder, поэтому я не могу использовать функцию поиска из jQuery. Возможно, вы можете придумать другое решение. В любом случае спасибо.
Ответ №2:
Повторите элемент со значением внутри функции и задайте условный оператор внутри ‘each’, чтобы проверить, равно ли заданное значение для этого элемента аргументу, переданному функции. jsfiddle.net/puzzledGalore/6sy7badn/