2017-03-02 73 views
0

我有一个非常简单的函数,我只想在选定的对象具有某种类型的子项时才工作 - 在这种情况下,如果它具有ul嵌套。如何判断对象是否有某个元素的子元素?

我已经试过这一点:

var onMouseOver = function() { 
if (this.getElementsByTagName('ul') > 0);{ 
    console.log('entered'); 
} 
} 

这:

var onMouseOver = function() { 
if (this.querySelector('ul') != null);{ 
    console.log('enter'); 
} 
} 

,但它并不能帮助 - 功能仍会启动,即使它returnes '空'。

回答

0

你应该看看这些选择器的长度属性。

var onMouseOver = function() { 
 
if (this.querySelectorAll('ul').length > 0);{ 
 
    console.log('enter'); 
 
} 
 
}

var onMouseOver = function() { 
 
if (this.getElementsByTagName('ul').length > 0);{ 
 
    console.log('entered'); 
 
} 
 
}

+0

我已经尝试了这两个版本,但它仍然无法工作。 例如:在html中我有元素嵌套[像这样](http://pastebin.com/bKHPnvDb)。对于

  • 元素3
  • 函数应该不起作用,但它仍然有效。 – Lafioka

    0

    试试这个:)

    function ok(obj) { 
     
        var l = obj.children.length; 
     
    
     
        for (var i = 0; i <= l; i++) { 
     
        if (obj.children[i].tagName == "UL") { 
     
         var c = obj.children[i].children[0]; 
     
         alert("child id is :-" + c.tagName); 
     
         alert("child id is :-" + c.id); 
     
         alert("child value is :-" + c.innerHTML); 
     
         break; 
     
        } 
     
    
     
        } 
     
    }
    #child { 
     
        display: none; 
     
    }
    <!DOCTYPE html> 
     
    <html> 
     
    <body> 
     
        <div id="Parent" onmouseover="ok(this)">Find Child ? mouse over me 
     
        <p id="child">I'm Child</p> 
     
        <ul> 
     
         <li id="list">hello</li> 
     
         </ul> 
     
        </div> 
     
    </body> 
     
    </html>

    +0

    谢谢,但那不完全是我需要的 - 我正在寻找一些只能起作用的东西,如果孩子/孩子是某个标签;这种情况下,我需要函数才能工作,只有有ul的嵌套。 – Lafioka

    +0

    我已更新检查 –

    +0

    谢谢!这比我想象的要长一些,但是很有效。 :) – Lafioka

    相关问题