jQuery总是()总是显示该元素存在

时间:2014-03-23 15:20:57

标签: javascript jquery

我正在尝试查看li是否包含ul元素,但出于某种原因我正在做的事情总是说它确实包含ul元素。为什么呢?

http://jsfiddle.net/bT4B4/

HTML:

<ul class="doc-nav">
    <li><a class="selected" href="#introduction">Introduction</a>
        <ul>
            <li><a href="#getting-started">Getting Started</a></li>
            <li><a href="#hello-world">Hello World!</a></li>
            <li><a href="#hello-world">Hello World!</a></li>
        </ul>
    </li>
</ul>

jQuery:

$(document).on("click", "ul.doc-nav a", function (e) {
    e.preventDefault();
    if ($(this).closest("li").has("ul")) {
        alert("here");
    }
});

1 个答案:

答案 0 :(得分:6)

因为.has()返回一个jQuery对象,它始终是真正的

检查$(this).closest("li").has("ul").length

$(document).on("click", "ul.doc-nav a", function (e) {
    e.preventDefault();
    if ($(this).closest("li").has("ul").length) {
        console.log("here", this, e.target);
    } else {
        console.log("here", this, e.target);
    }
});

演示:Fiddle