Ерунда создайте элемент, используя JavaScript, а затем используйте функцию jQuery, чтобы преобразовать его в объект jQuery. Вы можете позволить jQuery создать элемент непосредственно для вас.
eCreditT[i] = $('<div>').addClass("cCreditTransaction").appendTo(eCreditSystem);
Кроме того, поскольку eCretitT [i] уже является элементом jQuery, нет необходимости снова вызывать функцию jQuery.
eCreditT[i].on('click', function () {
creditTransactionSlideBackIn(eCreditT[i], 150);
});
Если вы уже пробовали методы on
, bind
, live
и click
, то, возможно, проблема в вызванной функции. Попробуйте вставить console.log()
или alert()
внутри функции, чтобы убедиться, что событие click действительно происходит. Если это произойдет, то функция creditTransactionSlideBackIn()
является вашей проблемой.
EDIT
Проблема в том, что когда происходит событие, i
больше не является исходной переменной.
function addElements (arrayIndex)
{
eCreditT[i] = $('<div>').addClass("cCreditTransaction").appendTo(eCreditSystem);
eCreditT[i].attr ('id', ('trans' + i));
eCreditT[i].data ('id', i); // Store the id value to a data attribute
Затем, когда вы вызываете функцию, вы можете обратиться к атрибуту данных вместо переменной i
:
/* ***** THE PROBLEM AREA ***** */
eCreditT[i].on ('click', function () // if user clicks on the transaction box
{
creditTransactionSlideBackIn ($(this).data('id'), 150); // slide back in animation
});
return i++;
}