2014-01-15 1 views
0

Я использую bootstrap popover на элементах svg в D3. Несколько popovers могут быть открыты в любой момент времени. То, что я хотел бы знать, - это как, щелкнув по щелчку сзади, заставить его двигаться вперед, то есть фокусироваться?Как перенести выбранный (щелкнув) бутстрап вперед, когда открыты несколько popovers?

Есть ли способ увеличить z-индекс отдельного popover, чтобы переместить его вперед вручную?

Спасибо.

Edit:

мне удалось создать скрипку, используя предложенный ответ. Проблема заключается в том, что с использованием глобальной переменной он правильно увеличивает z-индекс на наиболее продвинутом поппоре, но после того, как он был перенесен на передний план, я не могу получить доступ к другим, т. Е. Даже щелкнуть позади ... так обработчик клика даже не вызывается. Я думаю, что происходит некоторое расслоение. Например: если вы посмотрите на дочерние узлы и щелкните по одной (ссылка в названии popover), затем нажмите на другую, чтобы полуперекрыть первый открытый, щелкните позади, и он будет двигаться вперед. Нажмите на тот, который уже позади, и ничего не происходит:

jsfiddle.net/Sim1/YME9j/9

Есть ли альтернатива приращения Z-индекс, чтобы принести поповер вперед без ущерба для взаимодействия с теми, которые за этим?

+0

Вы можете сделать это в обработчике кликов. –

+0

Привет Ларс, спасибо за комментарий, можете ли вы показать мне, как увеличить индекс z с помощью кода? – sim1

ответ

0

Вы должны быть в состоянии сделать это в click обработчика:

element.on("click", function() { 
    d3.select(this).attr("z-index", d3.select(this).attr("z-index") + 1); 
}) 

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

+0

Будет ли это увеличивать z-индекс popover или элемента svg? – sim1

+0

Элементы SVG не имеют индекса z. Вы можете установить атрибут так же, как любой случайный атрибут XML, но он не будет иметь никакого эффекта. –

+0

Я не уверен, что это сработает - это увеличит 'z-index' на щелкнутом элементе, но не уменьшит его на других. Я бы использовал класс для запуска изменения z-index с помощью CSS, а затем легко выбрать элемент, который в настоящее время имеет этот класс, и удалить его: 'element.on (« click », function() {d3.select (" .popup.onTop "). classed (" onTop ", false); d3.select (this) .classed (" onTop ", true);})'. Затем CSS будет указывать z-индекс для класса «onTop». – AmeliaBR

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