2013-12-10 3 views
1

У меня есть набор элементов, которые можно перетаскивать с помощью jquery. Все перетаскиваемые элементы относятся к классу «element».Цитирование через элементы, изменение индекса z, Javascript

Каждый раз, когда элемент перемещается, я хочу прокрутить все элементы и изменить индекс z на 5, а затем изменить элемент, перетащив z-index на 10, чтобы перетаскиваемый элемент всегда был сверху. ,

Это то, что у меня есть сейчас, но оно не работает.

mousedown(function(){ 
     var myObj = document.getElementsByClassName('element'); 
     for(var i =0, il = myObj.length; i<il; i++){ 
      myObj[i].style.zIndex='5'; 
     } 
     $(this).style.zIndex='10'; 
}) 

Как я могу заставить $(this) будет отображаться поверх всех остальных элементов в element классе?

+1

он должен быть 'this.style.zIndex = '10' ,' –

+0

Если бы это было мне, я будет поддерживать индекс z одинаковым и вместо этого переупорядочить dom, чтобы последний перетаскиваемый был перенесен в конец и, следовательно, сверху. Таким образом, порядок укладки других элементов перетаскивания остается неизменным, предполагая, что элементы неперетаскивания могут перекрываться. – codefactor

ответ

3

$(this) относится к объекту jQuery, а не к объекту документа. Вместо этого используйте this.style.zIndex="10";.

Поскольку вы не ссылались на какой-либо jQuery, нет ссылки $(this)!

+0

Вот и все, спасибо. Я соглашусь через 12 минут. –

1

Не видя остальную часть CSS и элементов структуры не очень возможно, но все, что вы сделали, можно записать в виде

$('.element').not(this).css('zIndex', 5); 
$(this).css('zIndex', 10); 
//or this.style.zIndex='10'; 

Свойство style принадлежит элементу DOM, $ (это) относится к обертка jQuery для элемента dom, на которую ссылается this. Поэтому либо вы можете установить свойство стиля напрямую, используя this.style, либо воспользуйтесь .css().

Также вы можете использовать селектор класса, чтобы выбрать и изменить все элементы ZIndex вместо того, чтобы писать петлю себя

+0

+1 Хотя это может быть даже короче;) Нет реальной причины делать '.not (this)', поскольку вы перезаписываете значение на 'this' следующей строке. – xec

Смежные вопросы