не большой вопросик по методу append()
я методом append вставляю огромный кусок html кода с разными дивами и id, знаю что это плохой тон, но все же.
вообщем, после вставки мне нужно работать с выше вставленными элементами, но jquery их просто не видет. подскажите, это из-за того что я целым куском сразу вставил? |
а метод on до того как непробовали?
|
Цитата:
|
Цитата:
|
добавляю методом append вот такой кусок кода
<div class="elementList" id = "project' + data.projects[key].id_project + '">
<div class="ObjectTitle">
<span class="glyphicon glyphicon-folder-open"></span> ' + data.projects[key].name + '
</div>
<div class="dropdown objMenu">
<a data-toggle="dropdown">
<span class="tools glyphicon glyphicon-cog"></span>
</a>
<ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
<li><a href="javascript:;">Совместный доступ</a></li>
<li><a href="javascript:;">Маркер</a></li>
<li><a href="javascript:;">Добавить в "Избранное"</a></li>
<li><a href="javascript:;">Информация</a></li>
</ul>
</div>
</div>
хочу посчитать количество элементов с классом elementList, выдает 0, то есть ни одного такого элемента нет, хотя я его добавил выше |
kowapos,
где код который считает |
alert($('.elementList').size());
|
kowapos, работает однако :-?
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>tooltip demo</title>
<link rel="stylesheet" href="http://code.jquery.com/ui/1.10.4/themes/smoothness/jquery-ui.css">
<script src="http://code.jquery.com/jquery-1.10.2.js"></script>
<script src="http://code.jquery.com/ui/1.10.4/jquery-ui.js"></script>
</head>
<body>
<textarea id="test" name=""><div class="elementList" id = "project' + data.projects[key].id_project + '">
<div class="ObjectTitle">
<span class="glyphicon glyphicon-folder-open"></span> ' + data.projects[key].name + '
</div>
<div class="dropdown objMenu">
<a data-toggle="dropdown">
<span class="tools glyphicon glyphicon-cog"></span>
</a>
<ul class="dropdown-menu" role="menu" aria-labelledby="dLabel">
<li><a href="javascript:;">Совместный доступ</a></li>
<li><a href="javascript:;">Маркер</a></li>
<li><a href="javascript:;">Добавить в "Избранное"</a></li>
<li><a href="javascript:;">Информация</a></li>
</ul>
</div>
</div>
</textarea>
<script>
var data = $('textarea').val()
$('body').append($(data));
alert($('.elementList').size());
</script>
</body>
</html>
|
ну а если этот кусок кода сразу вставить из переменной, а не из textarea? у меня не получается (((
|
kowapos,
так смотрите что у вас в переменной |
вот у меня короче такой код
$.ajax({ // аяксим
type: 'POST',
url: '/ajax/loadTreeAjax.php',
dataType: 'json',
data: {accept:1},
success: function(data){
//console.log(data.projects);
$.each(data.projects, function (key) {
newElement = '<div class="elementList" id = "project' + data.projects[key].id_project + '"><div class="ObjectTitle"><span class="glyphicon glyphicon-folder-open"></span> ' + data.projects[key].name + '</div><div class="dropdown objMenu"><a data-toggle="dropdown"><span class="tools glyphicon glyphicon-cog"></span></a><ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"><li><a href="javascript:;">Совместный доступ</a></li><li><a href="javascript:;">Маркер</a></li><li><a href="javascript:;">Добавить в "Избранное"</a></li><li><a href="javascript:;">Информация</a></li></ul></div></div>';
blockProjects.children('.TitleBlock').after(newElement);
}); // each
} // success
});
и если после этого цикла посчитать количество .elementList то выдаст 0, хотя на странице то что я вставил нормально отображается |
вообщем, я понял, у меня почему то сначала считает элементы, а потом в цикле добавляет, и из за этого 0 получается. как мне посчитать после ajax запроса?
|
все, спасибо. помог метод done() после ajax
|
kowapos,
после цикла, который запущен в аяксе нет ф-ии, которая считает, по коду ранее, считалка запускается куда ранее, нежели отработает аякс... Потому ф-ю считалку ставте на вызов из ответа аякса после each
$.ajax({ // аяксим
type: 'POST',
url: '/ajax/loadTreeAjax.php',
dataType: 'json',
data: {accept:1},
success: function(data){
//console.log(data.projects);
$.each(data.projects, function (key) {
newElement = '<div class="elementList" id = "project' + data.projects[key].id_project + '"><div class="ObjectTitle"><span class="glyphicon glyphicon-folder-open"></span> ' + data.projects[key].name + '</div><div class="dropdown objMenu"><a data-toggle="dropdown"><span class="tools glyphicon glyphicon-cog"></span></a><ul class="dropdown-menu" role="menu" aria-labelledby="dLabel"><li><a href="javascript:;">Совместный доступ</a></li><li><a href="javascript:;">Маркер</a></li><li><a href="javascript:;">Добавить в "Избранное"</a></li><li><a href="javascript:;">Информация</a></li></ul></div></div>';
blockProjects.children('.TitleBlock').after(newElement);
}); // each
//теперь после добавления контента, надо посчитать... для этого сделаем какую то yourFunction(){} на стороне...
yourFunction(); //будет находиться где то и содержать alert($('.elementList').size());
//Ну можно и сразу сделать вызов алерта, но все же это лучше вынести с обработки ответа,
//так же и сам ответ передать во внешнюю ф-ю для обработки
} // success
});
|
| Часовой пояс GMT +3, время: 09:30. |