Как я могу сохранить значение data [i], чтобы использовать его в location.href?

  $('<td />', {text: data[i]}),
      $('<td />').append(
        $("<i [...] ></i>").click(function(){
          var sure = confirm("text");
          if (sure)
            location.href ="privateServices/deleteZone.php?zone="+data[i];
        })

Это мой код Javascript внутри цикла for, и данные [это], очевидно, не определены, когда я щелкаю по значку, поэтому мне нужно хранить его различные значения для каждого связанного значка

0
user8025570 28 Май 2017 в 16:13

2 ответа

Лучший ответ

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

var $i = $("<i [...] ></i>")
             .data('href', "privateServices/deleteZone.php?zone="+data[i])
             .click(function(){
                  if(confirm("text")){
                     location.href = $(this).data('href')
                  }
              });

var $td = $('<td />', {text: data[i]}).append($i);

Или еще проще присвоить data[i] другой переменной и использовать вместо нее эту переменную.

1
charlietfl 28 Май 2017 в 14:01

Вам нужна одна дополнительная функция, которая будет хранить значение data[i].

// put this function outside loop - if any
function set_click(el, value){
    return el.click(function(){
      var sure = confirm("text");
      if (sure)
        location.href ="privateServices/deleteZone.php?zone="+value;
    }
}

// [...]

$('<td />', {text: data[i]}),
  $('<td />').append(
      function(){
          return set_click($("<i [...] ></i>"), data[i]);
      }
  );
0
instead 28 Май 2017 в 15:11