我正在创建一个阵列&通过变量为函数中的每个索引赋值。
我还想为每个变量附加一个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> <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++;
}
答案 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);
}
}