Для постановки задачи - PullRequest
       2

Для постановки задачи

0 голосов
/ 29 августа 2011

У меня есть оператор for, например

function myspecialFunction(elem) {

var currentItem = elem;
var currentImg = elem.find('img');

jQuery(currentImg).append('some text');
...

Проблема, похоже, заключается в том, что когда elem имеет> 1 того же элемента изображения - он перезаписывает данные предыдущего?То есть, когда возвращается тот же currentImg - оператор перезаписывает данные предыдущего?

Как я могу обеспечить сохранение тех же значений currentImg?то есть я надеялся использовать как $(this), но это не похоже на работу?Мой HTML выглядит как

Ответы [ 3 ]

1 голос
/ 29 августа 2011

Вы можете переписать вышеупомянутое как

jQuery('.class').each(function() {
    myspecialFunction(jQuery(this));
});

function myspecialFunction(elem) {  
    var currentItem = elem;
    var currentImg = elem.find('img');

//....
}

, это более идиоматично, и $(selector).each() вводит закрытие, чтобы гарантировать, что правильное значение захватывается в каждой итерации цикла.

Чтобы сделать нечто подобное с простым циклом for, было бы

var myClass = jQuery('.class');

for (var i = 0, len = myClass.length; i < len; i++) {
    (function () {
        myspecialFunction(jQuery(myClass[i]));
    })();
}

function myspecialFunction(elem) {

    var currentItem = elem;
    var currentImg = elem.find('img');
    // ...
}

В зависимости от ваших целевых браузеров, может помочь и более конкретная, чем просто класс CSS, т. Е. Если все элементы, которые вывыбираются все одинаковые имена тегов, затем используйте имя тега в селекторе.

0 голосов
/ 29 августа 2011

currentImg является локальным для функции, в которой он находится ... он не только будет перезаписываться при каждом вызове, он даже не будет существовать вне этой функции.значения, которые возвращает elem.find ('img')?Если так, то я думаю, что вы делаете это неправильно.Вам необходимо ограничить список переменных за пределами функции.

0 голосов
/ 29 августа 2011

Примерно так, используя jQuery each loop

jQuery('.class').each(function(){
    myspecialFunction($(this));
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...