Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 10.10.2013, 22:13
Аспирант
Отправить личное сообщение для Round Посмотреть профиль Найти все сообщения от Round
 
Регистрация: 08.04.2012
Сообщений: 49

динамичный алфавитный список
Делаю список ингредиентов с алфавитными якорями и вызов якорей по нажатию на букву алфавита. Все вроде бы работает, но нужно пару функций, которые я не знаю как прикрутить.

Вот закинул в песочницу то что уже готово: Alphabet

Этот весь список выводится динамически циклом из базы.

Есть три вещи, которые я хочу исправить:

1. Так как алфавит должен быть полным (это только в песочнице я его немного урезал). А вот описание ингредиентов могут пополняться не все сразу, а постепенно. И какое то время, некоторые буквы выводят пустые якоря. Выглядит глупо - нужно сделать так что бы те якоря, под которыми нет ингредиента выводили некий текст-заглушку, например - "Empty section".

2. Несколько раздражает цепочка пустых якорей (столбик из точек). Как можно спрятать "пустые" якоря в общем списке, когда выводится все ингредиенты. Например, сейчас пустые якоря под буквами V W X Y Z а точки под ними уродливо выстроились в колонку.

3. При нажатии на название ингредиента открывается описание ингредиента, и пока оно открыто нужно как то добавить класс .active для этой ссылки (название ингредиента).

Возможно я слишком усложнил. Но по другому не получается. Вся эта "гармонь" завязана на динамически формируемый список ингредиентов и там я ничего менять не могу. Вернее, все что мог изменить - уже изменил. Этот список формируется чужим плагином для WP и там те ещё пляски с бубном.

По этому я решил тот плагин особо не трогать а попробовать воспользоваться тем что он выводит этот список и его уже обвесить скриптами.

Может кто то знает более простое решение. Буду благодарен, если подскажете. (но учитывайте плз. я в js слабо разбираюсь)
Ответить с цитированием
  #2 (permalink)  
Старый 11.10.2013, 09:04
Аватар для ksa
ksa ksa вне форума
CacheVar
Отправить личное сообщение для ksa Посмотреть профиль Найти все сообщения от ksa
 
Регистрация: 19.08.2010
Сообщений: 14,122

Round, могу помочь, 1000р в час...
Ответить с цитированием
  #3 (permalink)  
Старый 11.10.2013, 10:02
Аспирант
Отправить личное сообщение для Round Посмотреть профиль Найти все сообщения от Round
 
Регистрация: 08.04.2012
Сообщений: 49

Премного благодарен, но я хотел бы разобраться в этом, а не просто работу скинуть на кого то.

Я ожидаю в общении здесь получить идею как эти функции прикрутить к тому что уже есть.

По первому вопросу (заглушка - "Empty section") я так понимаю, что нужно как то проверять что дочерний блок не пустой, а если он пуст, то все прятать и показать лишь span - "Empty section". Только вот, как это сделать?

Второй вопрос может быть завязан с первым. Там же где определяем что блок пуст - назначать некий класс для этого блока, например .empty (display:hide)

По третьему вопросу, я пока что вообще не представляю как это сделать.

Спасибо всем за активное общение.
Ответить с цитированием
  #4 (permalink)  
Старый 11.10.2013, 12:50
Аспирант
Отправить личное сообщение для Round Посмотреть профиль Найти все сообщения от Round
 
Регистрация: 08.04.2012
Сообщений: 49

Третий вопрос уже не актуален.
Все решил простой подменой класса

$(".ing-title").click(function(){
  $(".active-ing").removeClass("active-ing");
  $(this).addClass("active-ing");
});


По первым двум вопросам нужен совет.
Ответить с цитированием
  #5 (permalink)  
Старый 13.10.2013, 14:13
Аспирант
Отправить личное сообщение для Round Посмотреть профиль Найти все сообщения от Round
 
Регистрация: 08.04.2012
Сообщений: 49

Все сделал сам.

Может кому пригодится - вот решения:

1. что бы сделать заглушку для пустых букв немного изменил код подсчета букв и повесил фейд-ин для нового элемента с классом "blank", а в этот элемент положил свой текст-заглушку.

2. что бы убрать пустые якоря, дописал поиск следующего брата и если его нет, то элемент прячем. вернее, у меня вышло зеркально - я сначала спрятал все якоря, а потом дисплей-блок только для тех у которых есть брат с нужным мне классом.

3. третье решение я описал выше...

Вот что в итоге получилось:

$("a").click(function(){
  $(".active-ing").removeClass("active-ing");
  $(this).addClass("active-ing");
});


var all_spans = $('.alpha-row .accordion-inner').hide();

$('.alpha-row a').click(function(e){
    var thisSpan = $(this).parent().find('.accordion-inner'),
        isShowing = thisSpan.is(":visible");

    // Hide all spans
    all_spans.hide();

    // If our span *wasn't* showing, show it
    if (!isShowing) {
        thisSpan.show();
    }

    e.preventDefault();
});


var triggers = $('.alphabet-nav a');
var filters = $('.alpha-box ing');
$(".noresult").hide();

triggers.click(function() {
	var takeLetter = $(this).text(),
		count = 0;
	filters.parent().hide();
	$(".noresult").hide();

	$.each(filters, function(i, item) {
		var compareFirstLetter = $(item).text().substr(0, 1);
		if (compareFirstLetter == takeLetter) {
			$(item).parent().fadeIn(222);
			count++;
		}
	});

	if (count === 1) {
		$(".noresult").fadeIn(22);
	}
});


$(".alpha-box .alpha-row").sort(asc_sort).appendTo('.alpha-box');
 //$("#debug").text("Output:");

function asc_sort(a, b){
        return ($(b).text()) < ($(a).text()) ? 1 : -1;    
    }


$(".ing-letter").next('.ing-list').each(function() {
  $(this).prev().css({display: 'block'});
});
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нужен полноценный список.... lolbla2 Общие вопросы Javascript 3 16.04.2013 22:50
Ext.form.ComboBox, как принудительно обнулить выпадающий список? martinelli ExtJS 4 10.07.2012 12:23
селект переделанный под список Vasёk18 Элементы интерфейса 0 13.04.2012 23:49
Autocomplete + выпадающий список yarnik jQuery 0 08.03.2012 15:20
Заполнить список значениями из динамически созданного выпадающего списка zhuzha Элементы интерфейса 0 17.08.2010 14:40