2015-04-17 39 views
-1

我想检查元素是否不直接在div之内。javascript [No Jquery]检查元素是否在div内

例如,考虑follwing markup-

如果我把一个div内的另一个div

然后,我可以用这个代码 -

if(document.getElementById('innerDiv').parentElement.id == 'outerDiv')) 

其中innerdiv是outerdiv内。

但是,如果我把四个div's放在另一个里面,那我该如何检查任何div是否在给定的div内。

有可能会比使用此代码

innerelem.parentnode.parentnode.parentnode.parentnode 

我希望我能解释我想要做一个更好的选择????

+0

可能得到的容器div的内部HTML和正则表达式测试为'ID ='innerDiv''的occurances? – Banana

+0

如果你使用你刚才提到的1个选项,那么有多少'div'并不重要,它可以工作。 – P5Coder

回答

1

有可能会比使用此代码

一个更好的选择几个选项:

  1. 如果你真的有id S(或其他任何东西,你可以用它来唯一标识内部元素内部的一个),那么你可以使用querySelector

    if (document.getElementById("outerDiv").querySelector("#innerDiv")) { 
        // Yes, it's inside it 
    } else { 
        // No, it isn't 
    } 
    

    querySelector返回null如果它没有找到该元素,并且当您在元素上使用它时,它只会在该元素的后代(而不是整个文档)内查找。所有现代浏览器和IE8都支持querySelector

  2. 如果您需要更多的灵活性,循环将比.parentNode.parentNode...少脆:

    var node, inside; 
    inside = false; 
    for (node = innerelem; node; node = node.parentNode) { 
        if (node.id === 'outerDiv') { 
         inside = true; 
         break; 
        } 
    } 
    
1
<html> 
<body> 
<div id="oInput"> 
    <input id="1" type="text"> 
    <input id="2" type="text"> 
    <input id="3" type="text"> 
    <input id="4" type="text"> 
    <input id="5" type="text"> 
</div> 
<script type="text/javascript"> 
    var oInput = document.getElementById('oInput'), oChild; 
    for(i = 0; i < oInput.childNodes.length; i++){ 
     oChild = oInput.childNodes[i]; 
     if(oChild.id== 'your id'){ 
      alert('it is child'); 
     } 
    } 
</script> 
</body> 
</html> 
2

您可以创建这样一个功能:

function findUpId(innerId, outerId) { 
    var el = document.getElementById(innerId); 
    while (el.parentNode) { 
     el = el.parentNode; 
     if (el.id === outerId) 
      return true; 
    } 
    return false; 
} 

你可以然后致电:

var inside = findUpId("innerDiv","outerDiv");