在我的应用程序中,我可以打开几个相互重叠的div框。单击框时应将该框移动到顶部。实现这一目标的最佳方法是什么?
我唯一能想到的是循环遍历所有方框z-index值以获得最高值,然后将1加到该值并将其应用于所单击的div。
对我有什么建议吗?
答案 0 :(得分:14)
这样的事情应该这样做:
// Set up on DOM-ready
$(function() {
// Change this selector to find whatever your 'boxes' are
var boxes = $("div");
// Set up click handlers for each box
boxes.click(function() {
var el = $(this), // The box that was clicked
max = 0;
// Find the highest z-index
boxes.each(function() {
// Find the current z-index value
var z = parseInt( $( this ).css( "z-index" ), 10 );
// Keep either the current max, or the current z-index, whichever is higher
max = Math.max( max, z );
});
// Set the box that was clicked to the highest z-index plus one
el.css("z-index", max + 1 );
});
});
答案 1 :(得分:5)
假设你有一个具有特定类的元素(在我的例子中为“box”)并且所有元素都在这样的容器中:
<div>
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
</div>
假设你有正确的css:
.box {position:absolute; z-index:10}
您可以使用下面的jquery js代码:
$('.box').click(function() {
// set ohters element to the initial level
$(this).siblings('.box').css('z-index', 10);
// set clicked element to a higher level
$(this).css('z-index', 11);
});
答案 2 :(得分:4)
我会通过制作一个jQuery插件来解决这个问题,因此您不必担心手动设置z-index
并使用变量跟踪最高值:
(function() {
var highest = 1;
$.fn.bringToTop = function() {
this.css('z-index', ++highest); // increase highest by 1 and set the style
};
})();
$('div.clickable').click(function() {
$(this).bringToTop();
});
如果您使用页面上的任何其他代码设置z-index
,这将无效。
答案 3 :(得分:0)
你可以用jquery做这样的事情:
$('#div')。click(function(){$(this).css('zIndex','10000'});
只要所有底层div的z-index低于10000,这都可以工作。或者,您可以编写一个函数来迭代所有div并获得最高的z-index并将点击的内容移动到该数字+1
答案 4 :(得分:0)
你想要获得最高的z指数的想法是我认为的方法。
然而,不是在每次单击时循环遍历它,我只会在页面加载时循环遍历它并维护一个存储最高z-index的对象。CONSTANTS = {
highest_z_index = 0;
};
function getHighestZ (){
var $divs = $('div');
$.each($divs,function(){
if (this.css('z-index') > CONSTANTS.highest_z_index){
CONSTANTS.highest_z_index = this.css('z-index');
}
});
}
getHighestZ();
$('#YourDiv').click(function(){
if (CONSTANTS.highest_z_index > $(this).css('z-index'){
$(this).css('z-index',++CONSTANTS.highest_z_index);
}
});
答案 5 :(得分:0)
简单! $(".classname").on("click",function(){$(".classname").css('z-index',0);$(this).css('z-index',1);});