2009-04-08 1 views
0

я в настоящее время имеют следующие в JQuery 1.3.2JQuery Добавить HTML и событие

for (i = 0; i < totalPages; i++) { 
    var newDiv = $("<a href=\"#\">").append(i+1).click(function() 
    { 
     alert(i+1); 
    }); 
    $('#pageLinks').append(newDiv).append(" "); 
} 

Это выводит список номеров, по мере необходимости, но оповещение при нажатии на сгенерированный элемент возвращается значение TOTALPAGES, не значение i во время цикла. Как мне получить событие click, чтобы предупредить значение i вместо этого?

Благодаря

+0

думаю об этом. к моменту возникновения события клика, цикл for завершен, и я уже был увеличен до totalPages. i не является свойством нового div, который вы создали, это ваш итератор цикла. вам нужно ссылаться на переменную, принадлежащую div. – glomad

ответ

3

Попробуйте

for (i = 0; i < totalPages; i++) { 
    var newDiv = $("<a href=\"#\">").append(i+1).click(function() 
    { 
     alert(this.text); 
    }); 
    $('#pageLinks').append(newDiv).append(" "); 
} 
0

Этот код должен сортировать вашу проблему вне:

for (i = 0; i < totalPages; i++) { 
    var newDiv = $("<a href=\"#\">") 
     .append(i+1) 
     .click(
      function() { 
       alert($(this).html()); 
      } 
     ); 
    $('#pageLinks').append(newDiv).append(" "); 
} 
-1

Это проблема масштабы связанных. Вам нужно сформировать замыкание вокруг операторов в цикле for, используя, что я называю защитой области. Что-то вроде этого:

var totalPages = 10; 
for (i = 0; i < totalPages; i++) { 
    (function() { 
     var no = i + 1; 
     var newDiv = $("<a href=\"#\">").append(i+1).click(function() { 
     alert(no); 
    }); 
    $('#pageLinks').append(newDiv).append(" "); 
})(); 
0

Если, скажем, у вас не было текста числа как часть ссылки, мне нравится кодировать значения, как это в идентификатор, который даст вам следующее:

<body> 
<div id="pageLinks"><!-- --></div> 

<script> 
var totalPages = 10, newDiv; 
for (i = 0; i < totalPages; i++) { 
    var link = "<a href=\"#\" id=\"link-"+(i+1)+"\">"+(i+1)+"</a>"; 
    newDiv = $(link).click(function() { 
    alert($(this).attr('id').split('-')[1]); 
    }); 
    $('#pageLinks').append(newDiv).append(' '); 
} 
</script> 
</body> 

 Смежные вопросы

  • Нет связанных вопросов^_^