@Vladisus

Как заставить это работать одновременно?

Есть скрип:
$(document).ready(function() {
        // 1
	$(".button-collapse").sideNav();
	$('.dropdown-button').dropdown({
		inDuration: 300,
		outDuration: 225,
		constrain_width: true, // Does not change width of dropdown to that of the activator
		hover: false, // Activate on click
		alignment: 'right', // Aligns dropdown to left or right edge (works with constrain_width)
		gutter: 0, // Spacing from edge
		belowOrigin: false // Displays dropdown below the button
	});
       // 2
	$("#shuffle").bind('click', shuffle);
	function shuffle() {
	$(".facts").each(function() {
		var divs = $(this).children('div');
		for (var i = 0; i < divs.length; i++) $(divs[i]).remove();
		var i = divs.length;
		if (i == 0) return false;
		while (--i) {
			var j = Math.floor(Math.random() * (i + 1));
			var tempi = divs[i];
			var tempj = divs[j];
			divs[i] = tempj;
			divs[j] = tempi;
		}
		for (var i = 0; i < divs.length; i++) $(divs[i]).appendTo(this);
	});
	}
})

Первая часть инициализирует компоненты materializecss, вторая это функция которая тасует элементы.
Пока элементы не тасованы дропдауны работают, как только пользуешся тасовкой - дропдауны не работают...
  • Вопрос задан
  • 204 просмотра
Решения вопроса 2
rmaksim
@rmaksim
без разметки не совсем понятно, но скорее всего вот почему
вы вешаете дропдаун на '.dropdown-button' который в каком-то диве - который внутри ".facts" - так?
и потом при тасовке удаляете эти самые дивы $(divs[i]).remove() - соотв. удаляются и те дропдауны

т.е. по идее надо снова повесить дропдауны на "новые" дивы после их добавления $(divs[i]).appendTo(this)
например так
for (var i = 0; i < divs.length; i++) {
    $(divs[i]).appendTo(this).dropdown({...})
}
Ответ написан
Комментировать
standy
@standy
Так происходит потому что после удаления элементов удаляются все события.

Перетасовать элементы, можно и без удаления.
function shuffle() {
  var $root = $(this);
  var $divs = $root.children();
  for (var i = $divs.length-1; i>1; i--) {
    var rnd = Math.floor(Math.random() * i);
    // случайный элемент из списка перемещается в конец
    $divs.eq(rnd).appendTo($root);
  }
}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы