2016-10-21 8 views
0

私は、特定のクラスを持つHTML要素のテキスト値をパラメータとして関数内の関数に渡そうとしています。それぞれの中のjQuery関数は、最後の要素からの値を返すだけです

出力は最後に渡されたテキスト値のみを返します。

各テキスト値は、その横の要素に含まれる関数に割り当てたいので、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> 

あなたはそれが各反復にだけ最新の値を渡して見ることができるように。

.contentOptinクラスのすぐ隣に.testクラスの値を渡す必要があります。

コメント行は、私が各繰り返しで必要とする値を私に与えますが、パラメータとして関数内にはありません。 Optin(param)関数は、.testクラステキストの値をsaveActivity(param)に渡すコードを、.contentOptinクラスの要素内のパラメータとして機能させます。

jsfiddle example

+1

本当にそれを再現することはできません - > https://jsfiddle.net/adeneo/zym4gsrp/ – adeneo

+0

[jsfiddle example](https://jsfiddle.net/puzzledGalore/rrufmpsf/) – puzzledGalore

答えて

1

$(this).find(".test").text()$(this).next().text()を交換してください。

$(this).find(".test").text()optin-holderdivためtestクラスを有する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/>");          

}); 
+0

申し訳ありませんが、私はHTMLコードを誤って入力しましたが、クラス.testの要素がクラス.optin-holderの要素の子孫ではないので、jQueryのfind関数を使用することはできません。おそらく、あなたは別の解決策を考え出すことができます。とにかくありがとうございました。 – puzzledGalore

0

反復関数内の値を持つ要素とこの要素のために与えられた値は、関数に渡された引数と等しいかどうかをチェックする「はそれぞれ」内に条件文を設定します。 jsfiddle.net/puzzledGalore/6sy7badn/

関連する問題