Рандомизируйте последовательность элементов отделения с jQuery

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

depth=0
output=$(find . -mindepth $depth -maxdepth $depth -type d | sort); 
until [[ ${#output} -eq 0 ]]; do 
  echo "$output"
  let depth=$depth+1
  output=$(find . -mindepth $depth -maxdepth $depth -type d | sort)
done
54
задан Nick Larsen 14 May 2011 в 00:35
поделиться

1 ответ

$('div.band div.member');

даст вам объект jQuery, содержащий

, которые соответствуют селектору, то есть div с элементом class , которые являются потомками div с диапазоном class .

Объект jQuery представляет собой объект, подобный массиву, в котором каждому совпадающему элементу присваивается числовое свойство (например, индекс) объекта, а также определяется свойство length . Чтобы получить один элемент, это

// first element
$('div.band div.member')[0];

или

// first element
$('div.band div.member').get(0);

. Вместо выбора всех элементов вы можете указать, чтобы выбрать конкретный элемент в соответствии с положением в DOM. Например,

// get the first div with class member element
$("div.band div.member:eq(0)")

или

// get the first div with class member element
$("div.band div.member:nth-child(1)")

РЕДАКТИРОВАТЬ:

Вот плагин, который я только что выбил

(function($) {

$.fn.randomize = function(childElem) {
  return this.each(function() {
      var $this = $(this);
      var elems = $this.children(childElem);

      elems.sort(function() { return (Math.round(Math.random())-0.5); });  

      $this.detach(childElem);  

      for(var i=0; i < elems.length; i++)
        $this.append(elems[i]);      

  });    
}
})(jQuery);

Вот Рабочая демонстрация . добавьте / edit к URL-адресу, чтобы увидеть код. Если вам нужны какие-либо подробности о том, как это работает, оставьте комментарий. Вероятно, это могло бы быть связано с тем, чтобы сделать его более надежным для обработки определенных ситуаций (например, если есть другие дочерние элементы объекта jQuery, к которому подключается плагин), но это будет соответствовать вашим потребностям.

Код из демонстрации

$(function() {

  $('button').click(function() {
    $("div.band").randomize("div.member");
  });

});

(function($) {

$.fn.randomize = function(childElem) {
  return this.each(function() {
      var $this = $(this);
      var elems = $this.children(childElem);

      elems.sort(function() { return (Math.round(Math.random())-0.5); });  

      $this.remove(childElem);  

      for(var i=0; i < elems.length; i++)
        $this.append(elems[i]);      

  });    
}
})(jQuery);

HTML

<div class="band">
    <div class="member">
        <ul>
            <li>John</li>
            <li>Lennon</li>
        </ul>
    </div>
    <div class="member">
        <ul>
            <li>Paul</li>
            <li>McCartney</li>
        </ul>
    </div>
    <div class="member">
        <ul>
            <li>George</li>
            <li>Harrison</li>
        </ul>
    </div>
    <div class="member">
        <ul>
            <li>Ringo</li>
            <li>Starr</li>
        </ul>
    </div>
</div>
<button>Randomize</button>
94
ответ дан 7 November 2019 в 07:50
поделиться
Другие вопросы по тегам:

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