зависимые UL LI вместо select (Застрял)
Добрый день! Переделал готовый скрипт зависимых селектов где использовались value о style для связи под атрибут data-id.
Вся работает как нужно. Но потребовалось переделать так, что бы связать списки из ul и li. Прошу помощи... Пока вот что сделал, как дальше не могу понять... (как переделать оставшиеся селекты и оптинсы под ul li) Смысл сделать зависимые выпадающие ul li (Здесь как пример я убрал все флюшки для стилизации выпадения) Как доделать скрипт под ul li, а не select option...??? <ul id="one"> <li data-id="fg_0"> <label for="test1">Значение</label> </li> <li data-id="fg_1"> <label for="test2">Значение</label> </li> <li data-id="fg_2"> <label for="test3">Значение</label> </li> </ul> <ul id="two"> <li data-id="fg_0"> <label for="test4">Значение</label> </li> <li data-id="fg_1"> <label for="test5">Значение</label> </li> <li data-id="fg_2"> <label for="test6">Значение</label> </li> </ul> /*! Chained 1.0.0 - MIT license - Copyright 2010-2014 Mika Tuupola */ !function (a, b) { "use strict"; a.fn.chained = function (c) { return this.each(function () { function d() { var d = !0, g = a("option:selected", e).val(); a(e).html(f.html()); var h = ""; a(c).each(function () { var c = a("li", this).attr('data-id'); c && (h.length > 0 && (h += b.Zepto ? "\\\\" : "\\"), h += c) alert(c); }); var i; i = a.isArray(c) ? a(c[0]).first() : a(c).first(); var j = a("option:selected", i).val(); a("option", e).each(function () { a(this).is('[data-id='+h+']') && a(this).val() === g ? (a(this).prop("selected", !0), d = !1) : a(this).is('[data-id='+h+']') || a(this).is('[data-id='+j+']') || "" === a(this).val() || a(this).remove() }), 1 === a("option", e).size() && "" === a(e).val() ? a(e).prop("disabled", !0) : a(e).prop("disabled", !1), d && a(e).trigger("change") } var e = this, f = a(e).clone(); a(c).each(function () { a(this).bind("change", function () { d() }), a("option:selected", this).length || a("option", this).first().attr("selected", "selected"), d() }) }) }, a.fn.chainedTo = a.fn.chained, a.fn.chained.defaults = {} }(window.jQuery || window.Zepto, window, document); Запускается так $("#two").chained("#ont"); Как доделать скрипт под ul li, а не select option... |
chelkaz,
информации недостаточно и вероятно надо переделывать не скрипт зависимости селектов, а в ваш скрипт стилизации добавлять необходимую функциональность, если дополнять предложенный скрипт не хватает полноценного макета со всеми скриптами, css и select, может тогда вам кто-то поможет. |
Цитата:
То есть логично, что если выбрали что то в первом, то во втором появляется выбор только для того, что в первом (так как между ними предполагается связь) |
chelkaz,
выбрали в 1 data-id="fg_0" значит во втором скрыли всё кроме data-id="fg_0" вот и весь алгоритм |
Если показывать/скрывать во втором по выбору в первом, то это же можно сделать проще, только связать не так:
$('#one li').click(function() { $('#two').find('li').show().not('#'+$(this).data('id')).hide(); }) <ul id="one"> <li data-id="fg_0"> <label for="test1">Значение 1</label> </li> <li data-id="fg_1"> <label for="test2">Значение 2</label> </li> <li data-id="fg_2"> <label for="test3">Значение 3</label> </li> </ul> <ul id="two"> <li id="fg_0"> <label for="test4">Значение 1</label> </li> <li id="fg_1"> <label for="test5">Значение 2</label> </li> <li id="fg_2"> <label for="test6">Значение 3</label> </li> </ul> |
Цитата:
not('[data-id="'+$(this).data('id')+' "]') |
Таким образом не будет выбран при моих связях.
PS. Я не совсем понимаю, что значит вместо select, если к примеру поведение его, может нужно что-то типа этого: $('#'+$(this).data('id')).prependTo('#two'); и еще чего-то свойственного выпадающему списку, поэтому думаю, что лучше идентификатор. |
О том, что у меня атрибут во втором списке иначе прописан. )
|
laimas,
id в данном случае лучше не использовать так как в <ul id="two"> обычно нужно выбирать несколько строк |
Почему несколько? Речь идет о списке со множественным выбором?
|
Часовой пояс GMT +3, время: 12:51. |