назначение метода клика переменной - PullRequest
0 голосов
/ 25 ноября 2011

Я создаю массив и присваиваю значение каждому индексу в функции через переменные.

Я также хочу прикрепить метод щелчка jquery к каждой переменной. Тем не менее, я получаю «undefined» в ответ, когда вызывается метод click.

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 ]

2 голосов
/ 25 ноября 2011

Попробуйте это:

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

Надеюсь, это поможет

1 голос
/ 25 ноября 2011

Учитывая, что каждый элемент, добавляемый в массив, выглядит как имя класса (cCreditTransaction), вы можете подключить события щелчка, используя что-то вроде

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

или в jQuery 1.7+, который вы можете использовать .on вместо .delegate

Тогда вам не нужно подключать n событий, а только одно событие, которое соответствует всем элементам в селекторе (в вашем случае, имя класса)

Вы также должны изменить $(document) на элемент контейнера, который имеет Id, чтобы обход DOM, чтобы найти классы, был максимально сокращен.Зачем?Поскольку поиск элементов по имени класса является относительно дорогой процедурой, в отличие от поиска тегов или, что еще лучше, идентификатора.

0 голосов
/ 25 ноября 2011

похоже, что в этой части должен быть цикл:

function abc()
{
  addingElements (i); 
}

есть вызов addElements и передается параметр 'i', но 'i' в тот момент все еще определенкак 0. это должно сказать что-то вроде

function abc()
{
     for (i=0;i<=7;i++)
     {
         addingElements (i); 
     }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...