jQuery Добавляет HTML и событие
-
06-09-2019 - |
Вопрос
В настоящее время у меня есть следующее в jQuery 1.3.2
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 вместо этого?
Спасибо
Решение
Попробуй это
for (i = 0; i < totalPages; i++) {
var newDiv = $("<a href=\"#\">").append(i+1).click(function()
{
alert(this.text);
});
$('#pageLinks').append(newDiv).append(" ");
}
Другие советы
Этот код должен решить вашу проблему:
for (i = 0; i < totalPages; i++) {
var newDiv = $("<a href=\"#\">")
.append(i+1)
.click(
function() {
alert($(this).html());
}
);
$('#pageLinks').append(newDiv).append(" ");
}
Если, скажем, у вас не было текста номера как части ссылки, я хотел бы закодировать подобные значения в идентификатор, который дал бы вам это:
<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>
Это проблема, связанная с областью применения.Вам нужно сформировать замыкание вокруг операторов в цикле 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(" ");
})();
Не связан с StackOverflow