Вы можете создать структуру HTML, подобную этой, которую вы могли бы дублировать для каждого потока. Это будет полезно, если в вашем HTML есть несколько потоков.
<div class="container">
<div class="header">
<input type="checkbox" value="Electronics" id="electronics" />
<label for="electronics">Electronics</label>
</div>
</div>
Тогда, предполагая, что ваши данные в базе данных выглядит так,
{
"Electronics": [
"VLSI",
"Tele Communication",
"Digital Circuits",
"Analog Communication"
],
"Medicine": [
"MBBS",
"MD",
"General Surgeon",
"Dental"
],
"Computers": [
"fuzzy logic",
"DataStructures",
"JavaScript"
]
}
Вы можете получить значение по json["Electronics"]
- это, как мы будем моделировать ajax
вызов. Тогда ваше событие change
будет выглядеть так.
$(".header [type=checkbox]").change(function() {
//remove all the older values - not necessary
$(".content").slideToggle(500, function() {
e.preventDefault();
$(this).remove();
});
//check if youre checking or unchecking
if (this.checked) {
//choosing header
var $header = $(this).closest(".header");
//building container element with ul for subjects in stream
var $content = $("<div/>", {
"class": "content"
}).append("<ul></ul");
var value = this.value;
//simulate ajax call -
var json = res[value];
//ajax here. result is json
//ajax success start - starting here , you could put this in the success function of ajax
//construct the lis - u could do it in any way
var $li = $.map(json, function (val, i) {
return "<li>" + val + "</li>";
});
//add the li to the uls
$content.find("ul").append($li);
//insert the content after specific header
$content.insertAfter($header).promise().done(function() {
//wait for the append to happen, else you wont get the animation
//open up the content needed
$content.slideToggle(500);
});
//ajax success end
}
});
В основном мы добавляем элемент, содержащий объекты в потоке динамически рядом с заголовком. Таким образом, это поможет, если в вашем HTML несколько потоков.Таким образом, в результате HTML будет выглядеть следующим образом:
<div class="container">
<div class="header">
<input type="checkbox" value="Electronics" id="electronics" />
<label for="electronics">Electronics</label>
</div>
<div class="content">
<ul>
<li>Fuzzy Logic</li>
<!--more li's like this-->
</ul>
</div>
</div>
Демо: http://jsfiddle.net/hungerpain/Uyugf/
ваш вопрос не ясен. – DevZer0
Ваш основной поток - это флажок или выпадающий список? –
Это флажок. поэтому, когда я проверяю его, связанный div будет slidetoggle – wordpressm