单击子元素而不触发父元素

时间:2011-12-12 14:10:20

标签: javascript html containers parent

我正在尝试编写一个将图像放入容器的脚本。我想能够移动图像。 问题是我检查是否有要放置的图像或者容器是否已满,当我尝试单击容器中的图像时,它首先运行检查。

function isTemp()
        {
            if(temp == null)
            {
                alert("Please pick an item to place in the container");
            }
            else
            {
                holder = true;
            }
        }
        function fillLarge()
        {
            isTemp();
            if(holder)
            {
                if(largeArray[0] != undefined &&largeArray[1] != undefined &&largeArray[2] != undefined && largeArray[3] != undefined &&largeArray[4] != undefined &&largeArray[5] != undefined)
                {
                    alert('This crate is full');
                }
                else
                {
                    for (var i=0; i<6; i++)
                    {
                        if (largeArray[i] == undefined)
                        {
                            largeArray[i] = /*"<span id = '"+temp+"'onclick='temp=this.id; break;'>*/"<img src='image/"+temp+".jpg'/>"/*</span>"*/;
                            largeArray[i].id = temp;            
                            document.getElementById("la").innerHTML += largeArray[i];
                            break;
                        }
                    }
                    document.getElementById(temp).style.display="none";
                    temp = null;
                }
                holder = false;
            }

}

HTML

<div>
        <h3> LARGE CONTAINER </h3>
        <span id="la" onclick="fillLarge();"> 
        </span> </div>

如何在不单击div本身的情况下单击图像并触发检查以阻止临时获取值?

2 个答案:

答案 0 :(得分:1)

防止向上冒泡,你可以通过返回false来做到这一点。

 <div>
    <h3> LARGE CONTAINER </h3>
    <span id="la" onclick="fillLarge(); return false;"></span>
 </div>

注意:这也可以防止默认行为(例如,阻止链接等)。 一些解释JS事件基础知识的阅读材料:Peter Paul Koch, Quirksmode.org

答案 1 :(得分:0)

尝试event.stopPropagation() - 记录here