Добавление элементов при нажатии
День добрый!
Возникла проблемка небольшая, прошу помочь решить ее. У меня есть код <ul id="cat01"> Категории <li id="pcat01">Подкатегории</li> </ul> я хочу сделать чтоб при нажатии на категориию или кнопку появлялась еще одна категория, но с следующим ид cat02 и при нажатии на подкатегорию появлялись подкатегории тоже со следующим ид pcat="pcat02" и так чтоб можно было добавлять и добавлять. Сейчас написал вот такой вот код для добавления
<script type="text/javascript">
$(document).ready(function(){
$("li").click(function(){
$("li").append("<li> Hello!</li>");
});
$("ul").click(function(){
$("ul").append("<ul> Hello!</ul>");
});
});
</script>
Но он почему-то добавляет не по одной категории и подкатегории, а сразу по многу и ид там не меняется. Подскажите плизз как можно реализовать задачу? |
а чего ты li засовываешь в li, ul - в ul? Где ты меняешь id? И почитай про всплывание событий
|
Исправил на это
<script type="text/javascript">
$(document).ready(function(){
$("ul").click(function(){
$("li").append("<ul> Hello!</ul>");
});
});
</script>
Но почему-то добавляется по 2 <ul> Hello!</ul> при клике А вот насчет как менять ид, хотел узнать, как это можно сделать? Подскажите плиззз! |
почему добавляются 2 <ul> Hello!</ul> из твоего кода непонятно. Либо дай ссылку на страничку, либо прикрепи к сообщению
также непонятно, почему ты в ul текст записываешь, там только li могут быть. И почему ты ul в li добавляешь. Тебе это нужно? Я думал тебе нужно добавлять еще одну такую же категорию, а не создавать подкатегорию (категории, на которой кликнули) по поводу менять id, а точнее назначать '<ul id="cat'+id+'" Hello!</ul>' чтобы вычислить id тебе надо будет найти уже существующие категории, определить их максимальный id и увеличить его на единицу |
Вот вроде с добавлением разобрался, но как можно сделать чтоб подкатегория добавлялась именно для выделенной категории? Сейчас добавляется только для первой
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script type="text/javascript">
$(document).ready(function(){
// добавляем действия для кнопки Добавить категорию
$("#addCat").click(function(){
$("ul:first").after("<ul><li><label><input type='checkbox' />Новая категория</label></li></ul>");
}); //--закрытие addCat click
// добавляем действие для кнопки Добавить подкатегорию
$("#addPcat").click(function(){
$("li:first").after("<ul><li><label><input type='checkbox' />Новая подкатегория</label></li></ul>");
}); //--закрытие addPcat click
}); //--закрытие document ready
</script>
</head>
<body>
<button id="addCat">Добавить категорию</button>
<button id="addPcat">Добавить подкатегорию</button>
<ul id="tree">
<li>
<label>
<input type="checkbox" />Категория 01
</label>
</li>
<li>
<label>
<input type="checkbox" />Котегория 02
</label>
<ul>
<li>
<label>
<input type="checkbox" />Подкатегория 01
</label>
</li>
</ul>
</li>
</ul>
</body>
</html>
|
например, с помощью :checked находишь выделенный checkbox, по нему находишь родительский ul и добавляешь. То же самое, если выделено более одного checkbox'а
только интерфейс какой-то странный. Я бы кнопки добавления как последний элемент списка указывал |
Боксы выборки это я так для примера указал
На самом деле их не будет <body> <button id="addCat">Добавить категорию</button> <button id="addPcat">Добавить подкатегорию</button> <button id="dellPcat">Удалить подкатегорию</button> <ul id="tree"> <li> <label> Категория 01 </label> </li> <li> <label> Котегория 02 </label> <ul> <li> <label> Подкатегория 01 </label> </li> </ul> </li> </ul> </body> Можно как-то определить какой выбран <label> к примеру? Чтоб уже к нему добавлять? Или что-то в этом роде? |
Подскажите плиззз почему могут не добавляться подкатегории в списке?
Именно не добавляются к тем, которые создает скрипт, к тем которые были изначально добавление работает. Селекторы вроде бы пробовал менять , все равно не получается победить (( Вот страничка с этим скриптом http://jukrim.ee/jquery/ |
click добавляет обработчики к имеющимся на данный момент элементам. Попробуй live
кроме того не используй селекторы, которые ищут по всему дереву, ограничь их, например, "#tree li label". Да и li здесь лишняя а вообще я бы назначил обработчик одному родительскому элементу (не проверял, могут быть ошибки)
$('#tree').click( function(e){
$('label.selected', this).removeClass('selected');
$(e.target).addClass('selected');
});
или даже
$('#tree').click( function(e){
$(this.arguments.callee.target).removeClass('selected');
$(e.target).addClass('selected');
this.arguments.callee.target = e.target;
});
|
Большое спасибо!
Заработало теперь, не догадался бы ни за что что дело в этом click. А еще вопросик не могли бы уточнить плизз насчет идентификации создаваемых элементов? ------------------------------------------------------------- по поводу менять id, а точнее назначать '<ul id="cat'+id+'" Hello!</ul>' чтобы вычислить id тебе надо будет найти уже существующие категории, определить их максимальный id и увеличить его на единицу ------------------------------------------------------------- как это можно реализовать? что-то я попробовал но ничего не получилось (( |
| Часовой пояс GMT +3, время: 06:15. |