jquery не видит добавленные динамически элементы
вообщем проблема в том что jquery не видит подгруженные данные на сайте, не пишите мне что есть on() live() они мне не подходят. для понимания расскажу вам про сайт немного.
есть у меня сайт лотерея. на сайте есть предметы, у них есть слоты, люди могут выкупать слоты и победному месту выдается предмет. и у меня есть несколько функций: 1) первая функция каждую секунду подгружает обновленный код на сайт (ну, в вкратце если говоря, функция подгружает обновленные слоты у предметов) 2) вторая функция проверяет не заполненные ли все слоты у предмета. если заполнены запускается третья функция и разыгрывается предмет 3) уже про нее немного написал выше. функция разыгрывает предмет между людьми которые купили слоты так, теперь о проблеме. когда 3-я функция уже определяет победителя она в слоте который был победным ставит ставит стили, но... jquery не видит элементы которые подгружала 1-я функция и стили не применяются думал об обновлении страницы, чтобы все слоты подгрузили средствами php, но мне надо чтобы все было динамически помогите плиз |
ф к
|
lossy11,
Без примеров кодов ответить невозможно |
функция 3
function rendLot () { var interval_lot; var interval_lot2; var count2 = $(".view_right_place").children("div").length; var id = $(".wrapper_view").attr("id"); var data; $.post({ url: '/php_script/summarizing.php', data: {id:id}, success: function (date) { data = date; if (data == "error") { $(location).attr('href','/'); } } }); $("body").animate({scrollTop: $(".view_right").offset().top}, 200); ion.sound({ sounds: [ {name: "sound"} ], path: "/sound/", preload: true, multiplay: true, volume: 0.2, ended_callback: function () { clearinterval1(interval_lot); clearinterval1(interval_lot2); clearinterval1(checkplaces); $("body").animate({scrollTop: $(".view_right").offset().top}, 200); var img_link = $("div[place=" + data + "]").children("a").children("div").children("img").attr("src"); var name_user = $("div[place=" + data + "]").children("a").attr("user_name"); var link_user = $("div[place=" + data + "]").children("a").attr("href"); $(".view_right_place").before('<div class="winnersblock"><span>честная игра</span>ПОБЕДНОЕ МЕСТО<i>' + data + '</i><div class="winnersblock_right"></div></div>'); $(".winnersblock").before('<div class="view_right_block_img"><div class="view_right_block_img_img"><div><img src="' + img_link + '" alt="gabenlottery"></div></div><div class="view_right_block_img_winner">предмет достался участнику - <a href="' + link_user + '">' + name_user + '</a></div></div>'); $(".view_right_panel").remove(); $(".view_right_place div[place=" + data + "]").children("a").children("div").css({opacity: '1', top: '-1px', left: '-1px', outline: '4px dashed #ff2185', 'outline-offset':'-3px'}).attr("winners","true").children("img").css({opacity: 1}); $(".view_right_place").children(".place2").addClass("place3").removeClass("place2"); winner(); } }); ion.sound.play("sound"); var col = parseInt(count2/20); var col2 = count2-parseInt(count2/20)*20; interval_lot = setInterval(function () { var i = 0; while (i < col) { var place = getRandom(1, 21)+(i*20); $("*[place=" + place + "]").children("i").show(); remove(place); i++; } },100); if (col2 > 1) { var place1 = 0; var place2 = 0; interval_lot2 = setInterval(function () { while (place1 == place2) { place2 = getRandom(1, col2+1)+(parseInt(count2/20)*20) } place1 = place2; $("*[place=" + place2 + "]").children("i").show(); remove(place2); }, 300); } } функция 2 function busyplace () { var result; var intervalcheckplace = setInterval(function () { var text = $(".view_progress_left i").text(); var id = $(".wrapper_view").attr("id"); if(id == undefined) { clearinterval1(intervalcheckplace); } $.post({ url: '/php_script/busyplace.php', data: {text:text,id:id}, success: function (date) { if (date != "error") { $(".view_progress_left i").text(date); var all_place = $(".view_left ul li:first-child span span").text(); var left_place = all_place - date; $(".view_progress_right i").text(left_place); var width = (date * 100) / all_place; $(".view_progress_in").animate({width: width + "%"},500); result = left_place; } else { result = "false"; } } }); if (result == 0) { rendLot(); clearinterval1(intervalcheckplace); } else if (result == "false") { clearinterval1(intervalcheckplace); alert("#31 - системный сбой. При повторном вызове данной ошибки сообщите в службу поддержки. С уважение Администрация проекта."); } }, 1000); } функция 1 function checkplaces () { var result; var checkplacesinterval = setInterval(function () { var id = $(".wrapper_view").attr("id"); if(id == undefined) { clearinterval1(intervalcheckplace); } $.post({ url: '/php_script/checkplaces.php', data: {id:id}, success: function (date) { if (date != "error") { $(".view_right_place").html(date); } else { result = "false"; } } }); if (result == "false") { clearinterval1(checkplacesinterval); alert("#32 - системный сбой. При повторном вызове данной ошибки сообщите в службу поддержки. С уважение Администрация проекта."); } }, 1000); } |
скинул
в 3-ей функции на 37 строчке стили применяю |
Dilettante_Pro,
я тут понял в чем проблема. у меня 1 функция подгружает новый код и стили сбиваются. мне надо из 3-ей функции отключить интервал 1-ой функции, как это можно сделать? создавал переменную checkplacesinterval вне 1-ой функции и потом очищал интервал в 3-ей функции, не получилось так |
сам написал проблему на форум, сам себе и помог :)
решил проблему свою |
Цитата:
В глобальной области вне функций в начале, перед всеми функциями, var checkplacesinterval; В функции 1 checkplacesinterval = setInterval(function () { var id = $(".wrapper_view").attr("id"); if(id == undefined) { clearinterval1(intervalcheckplace); } и использовать в 3-ей Кстати, здесь с intervalcheckplace та же история - эта переменная из второй функции |
получилось все, создал в глобальной области переменную, надо было просто в 3-ей функции чуть пораньше очистить интервал
оу, а в 1-ой функции не заметил, спс |
Часовой пояс GMT +3, время: 08:24. |