2013-12-04 5 views
0

У меня есть 2 DIVs, и в каждом DIV есть кнопка, которая делает что-то нажатие.Изменение JavasScript DOM в событии мыши

Теперь я добавил фрагмент кода, чтобы доставить DIV на передний план, когда они получили муссон. Что работает очень хорошо. Проблема состоит в том, что они проглатывают кусочек внутренней кнопки ... Внутреннюю кнопку можно щелкнуть, щелкнув дважды.

http://jsfiddle.net/nUtz6/

$('div').mousedown(function (event) { 
    $(this).parent().append($(this)); 
}); 

, как я мог бы решить эту проблему? Я сделал это так, потому что я не хочу увеличивать z-индекс свойства CSS до некоторого магического числа каждый раз, когда я нажимаю div. Я читал, что jquery также выполняет трюк DOM.

Проблема возникает из-за того, что я меняю DOM прямо перед нажатием кнопки «Событие» кнопки. Если я ничего не сделаю в мульдауне, все будет хорошо.

ответ

1

Просто убедитесь, что DIV на самом деле цель мероприятия:

$('div').mousedown(function (event) { 
    if (event.target.tagName.toLowerCase() != 'button') 
     $(this).parent().append($(this)); 
}); 

FIDDLE

+0

спасибо за это решение. На самом деле моя проблема немного сложнее. Моя DIV заполнена разными элементами, как таблица под кнопкой. Поэтому я вряд ли когда-либо получаю «настоящий» Top-DIV в event.target ... извините за чрезмерное упрощение моей проблемы! – NoRyb

+0

@NoRyb - так что просто замените его на все, что подходит? Обновлено, чтобы отфильтровать только кнопки – adeneo

+0

Мне нужен более общий подход. Панели загружаются динамически и могут содержать что угодно (они похожи на виджеты). Я просто хочу, чтобы эти виджеты были впереди, когда их щелкали (где угодно в их «окне»), но не мешали никаким щелчкам/средствам мыши внутри. – NoRyb

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