06.08.2017, 13:10
|
Интересующийся
|
|
Регистрация: 06.08.2017
Сообщений: 15
|
|
Организация цикла в подгруппе
Привет всем .
Последний раз редактировалось ТвердолобыйЛамер, 27.09.2017 в 20:08.
|
|
06.08.2017, 13:44
|
|
Профессор
|
|
Регистрация: 19.01.2012
Сообщений: 505
|
|
$('li').click(function(){
var li_id=$(this).attr('id');
$(this).parent().each(function(){
var current_li = $(this);
});//end each
});//end click
|
|
06.08.2017, 16:04
|
|
Профессор
|
|
Регистрация: 19.01.2012
Сообщений: 505
|
|
Может вам лучше нанять программиста?
|
|
06.08.2017, 19:29
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
$('li').click(function() {
var a = $.map($(this).siblings(), function(e) {
return e.id
});
a.push(this.id);
alert(a)
});
|
|
06.08.2017, 19:57
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от ТвердолобыйЛамер
|
но может я не правильно ставлю вопрос?
|
Из этого кода вообще не понятно чего нужно. То что я написал ранее, это есть ответ на "как превратить мою переменную в массив, чтобы в нем хранились все значения?". Если же отвечать на это же самое в контексте получить на сервере и поместить в базу, то полнейшая глупость, ибо серверу принято передавать ключ=>значение.
Каким образом интерпретируется щелчок по элементу - выбор пользователя? Тогда каким боком к этому имеют отношения другие элементы списка? Так что чего и для чего все это, понятия не имею, а значит и ответ на вопрос вряд ли вы от кого-то получите.
|
|
06.08.2017, 20:30
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Вот об этом, а не через пень колоду не понятно о чем, и надо было писать в вопросе.
Получить дерево не сложно, но еще раз - это полнейший бред с точки зрения передачи параметров серверу.
PS. Если обрабатываются щелчки по элементам списка, то зачем вообще нужен им тег А?
Последний раз редактировалось laimas, 06.08.2017 в 20:33.
|
|
06.08.2017, 21:01
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Какой-то кошмар. Охота понять как получить - значит изучать методы jQuery. Если же задача получения и отправления на сервер, то в ТЗ этой задачи явно не хватает "исходных данных".
Получить ветвь (дерево) не сложно, в обработчике это будет var tree = $(this).parents('li'), которое нужно "развернуть" и обходом в цикле получить нужное, так как не может быть для сервера как super_gadzetas_B=>super_gadzetas=>gadzetai=>musu_p rekes, должно быть наоборот.
Без разницы какая база MS Access или же MySQL, и так и другая работает с полями. И если говорить о дереве описанном в базе, то для сервера данные запроса должны указывать какие поля и с каким данными запрашиваются, а не слать ему нечто невразумительное musu_p rekes=>gadzetai=>super_gadzetas=>super_gadzetas_B, тем более кверху каком. Следовательно данные клиента должны соответствовать определенному набору что в вашем меню и попытках напрочь отсутствует.
|
|
06.08.2017, 22:46
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от ТвердолобыйЛамер
|
Русский - Задаешь вопрос - в ответ тебе три часа будут доказывать какой же ты депил.
|
И на что именно вы хотите получить ответ? Я уже говорил - хотите научится языку, хорошо, изучайте на простых примерах конструкции, функции, методы языка. Чего же тогда сразу ставить перед собой задачу, суть которой, судя по вопросам, вы не понимаете?
Уж коли вопрос стоит о том как получить данные выбранной ветви для передачи серверу, то в первую очередь надо представлять как эти данные будут интерпретированы сервером. А как можно вышивать, крестиком или гладью, не важно, так как и получить эти данные можно различным способом (инструментами языка).
Вы топчитесь у мелочей, не понимая главного. Допустим, что ID элементов списка, это значения идентификаторов дерева описанного в SQL таблице. Поля таблицы имеют имена от A до F, в которых описаны идентификаторы дерева начиная от родителя и вниз. Запрос может содержать любое количество этих идентификаторов. Ваш список кроме идентификаторов более ничего не содержит. Как связать значения запроса с полями SQL таблицы, например для того, чтобы составить условие WHERE для запроса к таблице по значениям этих идентификаторов?
Если данные списка в общем никак не связаны с полями таблицы, то выход только один - данные в запросе должны быть в том же порядке, в котором они расположены в SQL таблице, то есть от родителя и ниже.
Передать на сервер массив не имеющий ключей для РНР нельзя, если только его не передавать как JSON. Если же формировать объект для Ajax, то объект обязательно должен иметь свойство=>значение. Если принять во внимание, что число не может быть свойством объекта, а париться с ним как со строкой не охота, то можно поступить и иначе - ID элемента списка, это будет свойство объекта, а его индекс в коллекции значением этого свойства. То есть на сервер будут передан развернутый массив, в котором значения (идентификаторы) являются ключами, а индексы (порядок в дереве/полях SQL таблицы) будут значениями.
$(function() {
$('li').click(function(e) {
e.stopPropagation();
var obj = {};
$(this).parents('li').add(this).each(function(i, e) {
obj[e.id] = i
});
$.post(location, obj, function(d) {
alert(d)
})
});
});
Сервер такой массив и ожидает, только сервер знает истинные имена полей, которые свяжет их со значениями по их индексам.
if($_POST) {
$keys = ['A', 'B', 'C', 'D', 'E', 'F']; //имена полей SQL таблицы
$data = array_flip($_POST);
$where = 'WHERE '.implode(' AND ', array_map(function($k, $v) {
return $k . '=' . $v;
}, array_intersect_key($keys, $data), $data));
exit($where);
}
В результате выбора в списке super_gadzetas_B и запроса, клиент получит ответ WHERE A=musu_prekes AND B=gadzetai AND C=super_gadzetas AND D=super_gadzetas_B.
А ведь не обязательно так, и ваша первейшая задача представлять данные на клиенте так, чтобы сервер их однозначно интерпретировал как данные связанные со структурой SQL таблицы, иначе все эти ваши уроки коту под хвост.
alert() - это диалог, ничего развернуть он просто не может.
Последний раз редактировалось laimas, 06.08.2017 в 22:49.
|
|
07.08.2017, 07:32
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от ТвердолобыйЛамер
|
то пройтись циклом по списку и получить его значение
|
Уму не постижимо. Просто взять и пройтись, так на этот вопрос вам ответ был дан еще в этом посте, почему этот ответ вам крайне не понравился?
Когда оказалось, что вы имели ввиду дерево (а кто бы мог догадаться, чего вы там в уме держали?), встал вопрос "а как надо?". Хрен его знает как же вам надо было. А это ведь определяется назначением этих данных, которые клиент и формирует. Следовательно и формат этих данных, и их формирование может быть различным. А не зная чего нужно, каким образом можно дать ответ на ваш вопрос? Да никаким, ибо любой из них может опять оказаться "не, не так...".
Хотите просто научится "бегать" по DOM структуре, так выполняйте простые примеры, изучая различные методы jQuery, без всяких простраций "есть дерево из базы, надо ... и т.д.", чтобы не заставлять отвечающих вам догадываться за вас чего вы там решаете. Ибо уже с точки зрения SQL id="super_gadzetas_B" и это и есть идентификаторы дерева в базе, по которым его элементы связаны, это очень неудачный выбор. И если даже так, то да, чтобы получить на сервере список такого дерева, то получение его "древним" способом потребует рекурсии. В тоже время, чтобы получить из базы элемент какой либо ветви этого дерева рекурсии не требуется. А это означает, что получение "Тип услуги > Тип товара > Фирма" для отправления на сервер есть пагубный подход, так как чтобы серверу понять что запрашивается, он вынужден будет обойти полученный многомерный массив рекурсивно.
Вот так. Думайте когда даже просто задаете вопрос, поясняя то, чего вы там в уме держите.
|
|
07.08.2017, 08:58
|
Профессор
|
|
Регистрация: 14.01.2015
Сообщений: 12,989
|
|
Сообщение от ТвердолобыйЛамер
|
Я с каждым разом убеждаюсь все больше и больше. Что на российских форумах лучше за помощью не обращаться , а решать все самому
|
Сообщение от ТвердолобыйЛамер
|
Правильно задать вопрос это искусство , которое не каждому дано .
|
НУ почему. Вернитесь к своему первоначальному посту, а в нем ведь даже не представлено html-структуры вашего списка. Вопрос же был как получить остальные. Ну разве можно только по этому описанию было понять, что вам нужно получить ветвь дерева списка от текущего (по которому щелкнули)? Да даже самый умный ежик что наш, что забугорный ни за что бы не догадался об этом.
А мое изложение не надо считать за грубости, я же не буду в каждом предложении добавлять смайлик ( ), типа все норм. Ну что такое. Думайте когда задаете вопрос, описывайте его суть, какая задача преследуется, предоставляйте код. Ответят, не волнуйтесь, иначе и получится - какой вопрос, такой и ответ. Причем тут форум и его обитатели?
|
|
|
|