将click方法分配给变量

时间:2011-11-25 09:50:19

标签: javascript jquery onclick

我正在创建一个阵列&通过变量为函数中的每个索引赋值。

我还想为每个变量附加一个jquery click方法。但是,当调用click方法时,我得到'undefined'作为回报​​。

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"><span class="cCreditsNo">-50</span>&nbsp;<img class="cCurrency" src="" alt="" /></div><span class="cCloseMsg">Click box to close.</span><div class="dots"></div><div class="dots"></div><div class="dots"></div>');
    creditTransactionSlideOut (eCreditTransactions[i], 666);                    // calling slideOut animation
    counterFunc ();
    return i++;
}

3 个答案:

答案 0 :(得分:2)

试试这个:

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

希望有所帮助

答案 1 :(得分:1)

鉴于您添加到数组中的每个元素都有一个类名(cCreditTransaction),您可以使用类似

之类的东西来连接点击事件
$(document).delegate(".cCreditTransaction", "click", function() {
   // code to fire on click goes here.
});

或在jQuery 1.7+中,您可以使用.on代替.delegate

然后您不需要连接 n 事件,而只需要匹配选择器中所有项目的一个事件(在您的情况下,类名称)

您还应该将$(document)更改为具有Id的容器元素,以便尽可能减少用于查找类的DOM遍历。为什么?因为按类名查找元素是一个相对昂贵的过程,而不是查找标记甚至更好的ID。

答案 2 :(得分:0)

看起来这部分应该有一个循环:

function abc()
{
  addingElements (i); 
}

调用了AddingElements,并传递了一个'i'参数,但'i'在那一刻仍被定义为0。 它应该说像

function abc()
{
     for (i=0;i<=7;i++)
     {
         addingElements (i); 
     }
}