変数にクリックメソッドを割り当てる

I am creating an array & assigning the value to each index in a function through variables.

私はまた、各変数にjqueryのクリックメソッドを添付したい。しかし、クリックメソッドが呼び出されたときに、私は「未定義」を返しています。

var i = 0;
var eCreditTransactions = new Array(6);        //6 members created which will be recycled
function abc()
{
    addingElements (i); 
}

                /* **** THE FOLLOWING IS THE PROBLEM AREA **** */
$(eCreditTransactions[i]).click (function()                   //if user clicks on the transaction box
{
    creditTransactionSlideIn (eCreditTransactions[0], 150);     //another function called
});

                /* **** this is the function being called in the first function above **** */
function addingElements (arrayIndex)                   //func called from within the 'createCreditTransaction()' func
{
    eCreditTransactions[i] = $(document.createElement('div')).addClass("cCreditTransaction").appendTo(eCreditSystem);
    $(eCreditTransactions[i]).attr ('id', ('trans' + i));
    $(eCreditTransactions[i]).html ('<div class="cCreditContainer">-50 </div>Click box to close.<div class="dots"></div><div class="dots"></div><div class="dots"></div>');
    creditTransactionSlideOut (eCreditTransactions[i], 666);                   //calling slideOut animation
    counterFunc ();
    return i++;
}
0
合意した、私は編集者から特定の行をコピーしなければならなかった。次の時間は、インデントに余分な努力を払う。
追加された 著者 Kayote,
コードの書式設定が完了しました。
追加された 著者 Kayote,
あなたの圧痕は本当に貧弱です。
追加された 著者 Lightness Races in Orbit,
編集機能を使用してください。
追加された 著者 Lightness Races in Orbit,
有難うございます
追加された 著者 Lightness Races in Orbit,

3 答え

これを試して:

$(document).ready(function() {
  $(".cCreditTransaction").click(function() {
      //do what you want on click event
  });
});

それが役に立てば幸い

2
追加された
ありがとうSudhir、それは動作しませんでした。なぜなら、 '.cCreditTransaction'クラスは、(ユーザアクションによって)関数が呼び出されるまで作成されないため、document.readyは解決策ではないということが分かります。 $( "。cCreditTransaction")click(function(){//クリックイベントで何をしたいか});
追加された 著者 Kayote,
あなたは今回はケーキに勝たなかった@Sudhirしかし、正しい方向に私を指示してくれてありがとう。あなたのコードを読んだ後でなければ、問題の1つが関数内のコードの位置であったのです。歓声メイト。
追加された 著者 Kayote,

配列に追加する各要素がクラス名(cCreditTransaction)を持っているように見える場合、クリックイベントを

$(document).delegate(".cCreditTransaction", "click", function() {
  //code to fire on click goes here.
});

or in jQuery 1.7+ you can use .on instead of .delegate

n イベントに接続する必要はありませんが、セレクタ内のすべてのアイテムに一致するイベントは1つだけです(あなたの場合はクラス名)

また、IDを持つコンテナ要素に $(document)を変更して、クラスを見つけるためのDOMトラバーサルができるだけ小さくなるようにする必要があります。どうして?クラス名で要素を見つけることは、タグを見つけることとは対照的に、比較的高価な手順であるため、IDです。

1
追加された
SpaceBisonありがとうございました。方法を理解するために私をしばらく時間がかかりましたが、「.on」と「.one」が答えです。私はまた、 'addingElements(i)'関数内にコードを挿入する必要がありました。
追加された 著者 Kayote,

この部分にループがあるように見えます:

function abc()
{
  addingElements (i); 
}

addElementsへの呼び出しがあり、 'i'パラメーターが渡されますが、 'i'はその時点で0と定義されています。 それは何かのように言うべきです

function abc()
{
     for (i=0;i<=7;i++)
     {
         addingElements (i); 
     }
}
0
追加された
必要はありません。ユーザーが1つのアクションで配列に1つの変数を入力するだけです。アイデアは、最大では、配列のメンバーが6人でなければならないということです.6個を使い切った後は、それらをリサイクルする必要があります。
追加された 著者 Kayote,
JavaScript - 日本のコミュニティ
JavaScript - 日本のコミュニティ
2 参加者の

日本人コミュニティのjavascript