我在页面上动态创建了可以通过jquery拖放的div。
我在每个div上添加了一个小按钮,允许用户通过单击删除div。
我遇到的问题是,我将突出显示的div设置为页面上最重要的项目但是如果div与另一个div重叠并且用户单击删除按钮,则下面的div被高亮显示并被带到前面而不是点击按钮。
我已将按钮放在div内,但位置似乎没有任何效果。该按钮被添加到div。
我假设它与按钮的z-index有关,但我可能完全在错误的轨道上
任何帮助将不胜感激。
这是我用来将按钮附加到div的代码。在create div函数循环中创建div之后调用此代码。
var but=document.createElement('input');
but.setAttribute('type','button');
but.setAttribute('class','removebutton');
but.style.position = "absolute";
but.style.top = "15px";
but.style.left = +width+"px";
but.style.float="right";
but.style.visibility="hidden";
but.onclick=function(){
if(confirm('Really delete?'))
{
$.post("delete_box.php",{i:i, page_ref:'<? echo $page_ref; ?>', template_ref:'<? echo $template_ref; ?>'}, function(data,status){ });
document.getElementById("frmMain").removeChild(newdiv);
document.getElementById(id).removeChild(but);
document.getElementById(id).removeChild(newbr);
}
}
这是我用来将点击的div带到前面并推回其他任何内容的代码(每个div的类名称为dragbox
)
$('.dragbox').click(function()
{
$(".removebutton").css('visibility', 'hidden');
$(this).css({
'background-image':'url(img/move.png)',
'background-repeat':'no-repeat',
'width':'15px',
'height':'15px',
'zIndex':'1000'
})
$(this).find(".removebutton").css('visibility', 'visible');
});
$('.dragbox').focusout(function() {
$(this).css({
'border', '0px',
'background-color', 'transparent',
'width', '0px',
'z-index', '0'
})
});
答案 0 :(得分:1)
我认为您需要停止按钮上的click事件的传播。
当用户点击该按钮时,点击事件将被传递(也称为bubbeling)到点击位置的所有底层元素。
but.onclick = function(e){
e.stopPropagation(); // stop the propagation of the click event to other elements
// ... your code
}