javascript передача переменных из метода с циклом в функцию щелчка - PullRequest
0 голосов
/ 04 октября 2010

В основном я пытаюсь передать переменную, определенную в массиве JSON, которая анализируется в цикле for, чтобы быть доступной в операторе click.

$(document).ready(function() {
  getJSON();
  var usedID;
 });
 function readJSON() {
  for (var i = 0; i < json.array.length; i ++) {
  usedID = json.array[i].id;
  var template = $('repeaterTemplate').clone();
  template.removeAttr('id');
  template.attr('id', 'k' + json.array.id);
  var omega = json.array.id;        
  $('#repeater').append(template);
  (function(o) {
     $('#' + o).click(function() {
    // this is where the submitID click function is now. It passes the omega value in

  });
  })(omega);

 }
 }
 $('.submitID').click(function() {
    submitNow(usedID);
  }

Прямо сейчас у меня есть submitIDФункция click в цикле my for вызывает функцию submitNOW, хотя и циклически повторяется цикл.Кто-нибудь может мне помочь с передачей userID из readJSON () в функцию click?

Я получаю ошибку разбора каждой вашей функции:

var userID = [];
var j = 0;
$('.submitNOW').each(function() {
   function(id) {
$(this).click(function() {
  submitNow(id);
});
  }(userID[j]);
});

1 Ответ

0 голосов
/ 04 октября 2010

Я думаю, что вы пытаетесь сделать что-то подобное, но у вас нет никакого способа связать определенный идентификатор пользователя с определенным элементом.

этот пример дает идентификаторы пользователей в том порядке, в котором они встречаются, элементам .submitID в том порядке, в котором они встречаются. также предполагается, что число идентификаторов и элементов пользователя одинаково.

/* this is a non-working example */

var usedIDs = [];

function readJSON() {
    for (var i = 0; i < json.array.length; i++) {
        usedIDs.push(json.array[i].id);
        moreFunctions();
        moreStuff();
    }
}

var j = 0;

$('.submitID').each(function () {

    function (id) {
        $(this).click(function () {
            submitNow(id);
        });
    }(usedIDs[j]);

    j++;

});

правок: исходя из вашей ревизии поста, это мое лучшее предположение о том, что вы пытаетесь сделать.

function readJSON() {

    for (var i = 0; i < json.array.length; i++) {

        var usedID = json.array[i].id;

        var template = $('repeaterTemplate').clone();
        template.removeAttr('id');
        template.attr('id', 'k' + usedID);
        $('#repeater').append(template);

        (function (o) {
            // assumign template is a jQuery object here; if not use $(template) instead
            template.click(function () {
                // this is where the submitID click function is now. It passes the omega value in 
                submitNow(o);
            });
        })(usedID);

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...