[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Добавить ul под li
Telez
Я новичек в JQuery, помогите разобраться.

У меня есть список категорий товара. На каждый клик хочу добавить продукт чтобы выглядело так:

<ul>
<li>
Category 1</li>
<li>
Category 2</li>
<ul>
<li>
Prod 1</li>
<li>
Prod 2</li>
<li>
Prod 3</li>
</ul>
<li>
Category 3</li>
</ul>



Мой код:

$("li").click(function{
this.load("phpfile.php");
});

Так не работает. Где ошибка?
sergeiss
Первое, что приходит в голову (не особо вникая в суть делаемого), это написать $(this) вместо this.

Тока я не понял - ты каждый раз будешь что-то добавлять, причем одно и то же к каждому li?

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Placido
как минимум: function{ -> function(){
McLotos
А зачем таки извращаться, да ещё и с jQuery? в чем вообще суть задачи? может есть более простые решения.

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
sergeiss
Цитата (SergeySA @ 29.06.2014 - 23:38)
А зачем таки извращаться, да ещё и с jQuery? в чем вообще суть задачи?

Наверное, со второго вопроса лучше было начать wink.gif

ТС с самого начала сказал:
Цитата (Telez @ 29.06.2014 - 22:18)
На каждый клик хочу добавить продукт чтобы выглядело так:

Предложи вариант без jQuery.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
McLotos
Раскрывающееся меню? Типа вложенных списков? Хватит и функционала css

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Telez
Список должен быть динамичным, т.е. в вложеном списке элементы могут добавляться или стираться.
Мой вопрос был как добавить вложенный список ПОД li категории.
Ведь this указывает на сам элемент (li), а load() пишет В эелемент.
$(this).append().load(....) - так не работает
Добавить после li div? А как к нему обратиться?
$(this div).load(..) ? - так тоже не работает
McLotos
Telez
Динамическим? Легко! PHP генерирует списки для меню.
А раз уж это всё генерируется php то можно создавать любые списки вложенные друг в друга как угодно.
Я уже миллион раз так делал =)))))

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Placido
По логике, нужно отдавать из phpfile.php только список <li> без <ul>, и тогда будет работать что-то вроде такого:
$("li").on("click", function(){  
$(this).after($("<ul>").load("phpfile.php"));
});
McLotos
программисты, которые фанатики jQuery - какие-то извращенцы. =)
Есть задача: создать раскрывающееся меню, чтобы элементы этого меню можно было добавлять и изменять динамически. Что значит динамически? прямо на сайте? т.е. на уже сформировавшемся меню? Что-то типа drag&drop?
Вариант, конечно. А если имеется ввиду что подразумевается какая-то админка, через которую можно создавать и всячески редактировать меню, то могу сказать что jQuery тут вообще не при чем, и даже докажу это готовым примером =)
Я не говорю что мой вариант самый идеальный, но я бы сделал так:
Таблица в базе данных MENU
id,name,link,parent,position

Есть запрос к таблице
SELECT * FROM Menu ORDER BY parent,position
в результате я получаю массив
array
Array
(
[1] => Array
(
[id] => 1
[name] => Пункт 1
[link] => #
[parent] => 0
[position] => 1
)

[2] => Array
(
[id] => 1
[name] => Пункт 2
[link] => #
[parent] => 0
[position] => 2
)

[3] => Array
(
[id] => 1
[name] => Пункт 2.1
[link] => ?go=2.1
[parent] => 2
[position] => 1
)

[4] => Array
(
[id] => 1
[name] => Пункт 2.2
[link] => ?go=2.2
[parent] => 2
[position] => 2
)

)

а дальше берём и делаем вот так
style.css
#nav {border:3px solid #3e4547;box-shadow:2px 2px 8px #000000;border-radius:3px;-moz-border-radius:3px;-webkit-border-radius:3px;}
#nav, #nav ul {list-style:none;padding:0;width:200px;}
#nav ul {position:relative;z-index:-1;}
#nav li {position:relative;z-index:100;}
#nav ul li {margin-top:-23px;-moz-transition: 0.4s linear 0.4s;-ms-transition: 0.4s linear 0.4s;-o-transition: 0.4s linear 0.4s;-webkit-transition: 0.4s linear 0.4s;transition: 0.4s linear 0.4s;}
#nav li a {background-color:#d4d5d8;color:#000;display:block;font-size:12px;font-weight:bold;line-height:28px;outline:0;padding-left:15px;text-decoration:none;}
#nav li a.sub {background:#d4d5d8 url("../images/down.gif") no-repeat;}
#nav li a + img {cursor:pointer;display:none;height:28px;left:0;position:absolute;top:0;width:200px;}
#nav li a img {border-width:0px;height:24px;line-height:28px;margin-right:8px;vertical-align:middle;width:24px;}
#nav li a:hover {background-color:#bcbdc1;}
#nav ul li a {background-color:#eee;border-bottom:1px solid #ccc;color:#000;font-size:11px;line-height:22px;}
#nav ul li a:hover {background-color:#ddd;color:#444;}
#nav ul li a img {background: url("../images/bulb.png") no-repeat;border-width:0px;height:16px;line-height:22px;margin-right:5px;vertical-align:middle;width:16px;}
#nav ul li:nth-child(odd) a img {background:url("../images/bulb2.png") no-repeat;}
#nav a.sub:focus {background:#bcbdc1;outline:0;}
#nav a:focus ~ ul li {margin-top:0;-moz-transition: 0.4s linear;-ms-transition: 0.4s linear;-o-transition: 0.4s linears;-webkit-transition: 0.4s linears;transition: 0.4s linear;}
#nav a:focus + img, #nav a:active + img {display:block;}
#nav a.sub:active {background:#bcbdc1;outline:0;}
#nav a:active ~ ul li {margin-top:0;}
#nav ul:hover {display:block;}

а в любой файл шаблона, например
index.htm

<ul id="nav">
<?php
for($i=1;$i<=count($menu);$i++)
{
if($menu[$i]['parent']=='0')
{echo "\n\r<li><a href=\"".$menu[$i]['link']."\">".$menu[$i]['name'];
echo "<ul>";
for($k=0;$k<=count($menu);$k++)
{
if($menu[$k]['parent']==$i)
{echo "\n\r<li><a href=\"".$menu[$k]['link']."\">".$menu[$k]['name']."</li>";}
}

echo "</ul>";
echo "</li>";
}
}

</ul>

в результате получим
что-то такое

Пункт 1
Пункт 2
Пункт 2.1
Пункт 2.2

Теперь разберем подробнее
в таблице у нас имеются поля
id - уникальный идентификатор пункта меню
name - имя ссылки для этого пункта
link - адрес ссылки для пункта
parent - уникальный идентификатор родительского пункта, если родителя нет, тогда 0
position - порядковый номер пункта внутри общего родителя

Можно ещё добавить поле visibility типа bool и ставить там 1 для всех пунктов которые нужно показывать и 0 для тех которые не нужно показывать (конечно учесть это в запросе)
или добавить поле access и показывать какие-то пункты только определенным пользователям, вариаций куча.
И если нам нужно поменять порядок пунктов внутри одного родителя, мы просто меняем их position
А если нужно пункт передвинуть в другого родителя то меняем parent
А если нужно поменять очередность самих родителей, то меняем у них position.
Очень управляемое меню. Я сам что-то подобное частенько использую.

P.S. этот код писался прямо тут, и учитывая что у меня сейчас 4 утра, ни разу не гарантирую что он будет работать, но по логике должен, можете проверить

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.